在寫代碼時,我想用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[];
