问题代码

//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 解决方案相关推荐

  1. QT编译错误:invalid application of 'sizeof' to incomplete type 'Qt3DRender::QPickEvent'

    执行3D常将中实体的pick操作,结果出现了编译错误:invalid application of 'sizeof' to incomplete type 'Qt3DRender::QPickEven ...

  2. error: invalid application of 'sizeof' to an incomplete type 'JNINativeMethod []'

    android studio比较奇葩得把new char[100]{"fff"}这样的直接写成字面值常量 而window 的jni则必须使用这种 -- 尴尬 然后发现2个jni文件 ...

  3. 报错解决——uwsgi错误invalid request block size

    uwsgi错误invalid request block size 使用uwsgi启动django代码,然后打开浏览器输入http://localhost:8000/admin.后台出现下面错误 in ...

  4. linux errno 线程,Linux errno 错误对照表

    errno 在 中定义,错误 Exx 的宏定义在 /usr/include/asm-generic 文件夹下面的 errno-base.h 和 errno.h,分别定义了 1-34 .35-132 的 ...

  5. Linux段错误-转

    Linux段错误 目录 1.什么是段错误? 2.为什么段错误这么"麻烦"? 3.编程中通常碰到段错误的地方有哪些? 4.如何发现程序中的段错误并处理掉? 正文 1.什么是段错误? ...

  6. Linux errno 错误对照表

    errno 在 中定义,错误 Exx 的宏定义在 /usr/include/asm-generic 文件夹下面的 errno-base.h 和 errno.h,分别定义了 1-34 .35-132 的 ...

  7. Linux内核错误(引导系统)Deepin用户手册在/etc/sysctl.conf文件中加入kernel.panic = 20,在/etc/sysctl.conf中kernel.sysrq=1内存

    Linux内核错误(引导系统)- 系统管理 -Deepin深度系统用户手册 Power By Baidu Ai 00:00 00:00 目录 1 简介 2 问题分析 3 案例分析 此文章约为4327字 ...

  8. linux mysql 2003错误代码,如何解决linux mysql2003错误

    linux mysql2003错误的解决办法:首先进入mysql目录:然后打开my.cnf文件,找到"bind-address = 127.0.0.1",并在前面加上"# ...

  9. 如何扫描和修复 Linux 磁盘错误

    在本文中,将学习如何使用 fsck 和 xfs_repair 命令修复 Linux 磁盘错误. 什么是FSCK? fsck(文件系统一致性检查)是用于检查Linux操作系统文件系统一致性的工具. 列出 ...

最新文章

  1. 2017级面向对象程序设计 作业三
  2. 一步一步学Silverlight 2系列(18):综合实例之RSS阅读器
  3. 原创,自己做的一个简单实用的提示小插件,兼容性很好,基本上都兼容!
  4. 1043 Is It a Binary Search Tree (25 分)【难度: 中 / 知识点: 构造二叉搜索树(BST) 】
  5. GIT项目管理工具(part9)--保存工作区
  6. Apache中的Order Allow,Deny用法详解
  7. C++ set的一些用法
  8. hadoop管理命令——fsck
  9. Java学习(01-10天, 基本语法)
  10. C Sharp进行附合水准路线计算中间点高程简易程序
  11. mysql 2000安装教程_Win10 64位安装个人版SQL2000图文教程
  12. 到底是什么决定了二极管的最高工作频率?
  13. Sklearn常用数据预处理方法介绍
  14. 计算机组成原理 原码,反码,补码,移码
  15. 网络技术实践—单臂路由器
  16. 远程开机(外网WOL远程唤醒)
  17. python查看excel所有sheetname
  18. cf不能全屏win7的解决方法_怎么解决win7电脑没声音 win7电脑没声音解决方法介绍【详解】...
  19. Win32消息集合----方便查阅
  20. 什么是领域驱动设计?

热门文章

  1. java传参数的方法_java中方法的参数传递机制
  2. 组合数学 算法导论 具体数学 博弈论 计算机科学数学
  3. 可以批量修改文件名、文件后缀的实用工具
  4. PHP请求一次网页前端浏览一次后端会出现两次请求次数的原因和解决方法。
  5. thinkphp5 接入百度语音合成接口,前台播报功能实例
  6. 白鹭引擎制作滚动框,类似div的oveflow
  7. C++王者之路 | C++的sizeof 与C语言的sizeof
  8. Echarts笔记-折线图定制(Y轴百分数,鼠标移动显示百分数,显示X轴,Y轴值)
  9. 二叉排序树的查找、插入
  10. C/C++轻松破解别人程序的窗口标题