我只是想知道typedef
在与未声明的结构一起使用时如何不会引发任何编译错误。以下代码正在编译,没有任何警告和错误。我的疑问是,为什么具有未声明结构的typedef
不会抛出任何错误。在所有平台上都一样吗
#include <stdio.h>
typedef struct undeclared_struct_st UND_STRUCT_S;
int main()
{
printf("nhello worldn");
return 0;
}
我用gcc 4.3.4在Suse 11中执行这个程序。
typdef struct undeclared_struct_st UND_STRUCT_S;
有效。它将struct undeclared_struct_st
声明为不可编译类型,然后将UND_STRUCT_S
声明为struct undeclared_struct_st
的typedef。不能创建不完整类型的对象,但可以创建指向不完整类型对象的指针。然后可以在另一个翻译单元中声明CCD_ 6。
这被称为正向声明,它是完全合法的C.