当前位置:
首页 >
Linux C 错误 invalid application of 'sizeof' to incomplete type 解决方案
发布时间:2025/3/15
58
豆豆
生活随笔
收集整理的这篇文章主要介绍了
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完
- 下一篇: Linux下如何让普通用户具备sudo执