欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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 解决方案的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。