sizeof(extern类型数组)

倖福魔咒の 提交于 2019-12-24 13:59:55

error:  #70: incomplete type is not allowed

用sizeof计算数组大小,编译器提示不允许使用不完整的类型。在keil上编译直接报错,拿到vs2010上编译可以通过,但是结果始终为0.

折腾半天终于搞明白其中的原因,原因如下:

  1.sizeof的计算发生在代码编译的时候;

  2.extern是在链接的时候解析的。

 

所以extern数组的时候,在.C文件里面只知道有这么个东西,但是具体长啥样不知道,只有到链接的时候才能确定其大小。sizeof在编译的时候extern数组还没有链接,所以才会提示不允许使用不完整的类型。

 

解决方法:1.直接把变量定义在要用sizeof的文件中。

     2.定义一个数组大小的宏。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!