Linux C 错误 invalid application of 'sizeof' to incomplete type 解决方案
生活随笔
收集整理的這篇文章主要介紹了
Linux C 错误 invalid application of 'sizeof' to incomplete type 解决方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?問題代碼?
//a.c文件char array_test[]={0XED, 0X34, 0X40, 0X34}; //main.c#define ARRAY_COUNT(array) sizeof(array) / sizeof(array[0])extern char array_test[];int main(void) { int i = 0;while(1){for(i = 0; i < ARRAY_COUNT(array_test); i++){}}return 0; }編譯會產生錯誤:invalid application of 'sizeof' to incomplete type
?
錯誤原因
sizeof不能用在extern變量
sizeof 的計算發生在代碼編譯 的時刻
extern 標注的符號 在鏈接的時刻解析
所以 sizeof 不知道 這個符號到底占用了多少空間
?
解決辦法
在a.c文件里增加定義
int array_count = sizeof(array_test) / sizeof(array_test[0]);
在main.c引入并使用?
extern int?array_count;
?
最終代碼
//a.c文件char array_test[]={0XED, 0X34, 0X40, 0X34}; int array_count = sizeof(array_test) / sizeof(array_test[0]); //main.cextern char array_test[]; extern int array_count;int main(void) { int i=0;while(1){for(i = 0; i < array_count; i++){}}return 0; }?
總結
以上是生活随笔為你收集整理的Linux C 错误 invalid application of 'sizeof' to incomplete type 解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/C++获取当前路径、获取任意pid完
- 下一篇: distribution was not