如果只对类或结构体做了声明而未定义,例如下面的程序:
struct X;
struct Y
{
void f(X *memx);
void g(X memx);
};
用指针传递是可以的,而传递对象则会报错,因为编译器知道如何传递一个地址,这一地址大小是一定的,而不用管被传递的对象类型大小。如果试图传递整个对象,编译器就必须知道X的全部定义以确定它的大小以及如何传递它
时间: 2024-10-06 13:22:37
如果只对类或结构体做了声明而未定义,例如下面的程序:
struct X;
struct Y
{
void f(X *memx);
void g(X memx);
};
用指针传递是可以的,而传递对象则会报错,因为编译器知道如何传递一个地址,这一地址大小是一定的,而不用管被传递的对象类型大小。如果试图传递整个对象,编译器就必须知道X的全部定义以确定它的大小以及如何传递它