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