invalid application of `sizeof' to incomplete type `char[] '


在写代码时,我想用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[];


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM