在写代码时,我想用extern来关联一个数组,然后利用sizeof计算数组的大小,代码如下:
...extern char a[];#define b size=(sizeof(a)/sizeof(a[0]))...
编译报错:
invalid application of `sizeof' to incomplete type `char[] '
主要原因是sizeof不能用在extern变量:
sizeof 的计算是在代码编译的时刻。 而extern是在链接的时刻。 所以 sizeof 在计算时,并不知道这个extern修饰的符号到底占用了多少空间。解决办法:
1.把sizeof()和数组写到一个文件中
2.不用宏定义b,而是在定义数组a的那个文件里定义 size=(sizeof(a)/sizeof(a[0]));
然后在其他文件中extern int size; extern char a[];