代码如下:
#include <stdio.h>
struct list {
struct t *next;
int i;
};
int main(void)
{
struct list l;
printf("len = %lu.n", sizeof(l));
return 0;
}上面的list类型中next成员的类型是struct t,但是struct t是未定义的,但是上面的代码编译是可以通过的,并且不会报警告。如果将其中的星号去掉,或者引用list类型中的i、或next成员时会报错
本文探讨了C语言中使用未定义类型的结构体成员时的行为。特别关注了一个例子,其中struct t作为指针成员next的类型,在未事先定义的情况下,代码仍然能够编译通过而没有警告。
2008

被折叠的 条评论
为什么被折叠?



