未声明结构的C typedef没有引发任何编译错误



我只是想知道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.

最新更新