error: #70: incomplete type is not allowed
用sizeof计算数组大小,编译器提示不允许使用不完整的类型。在keil上编译直接报错,拿到vs2010上编译可以通过,但是结果始终为0.
折腾半天终于搞明白其中的原因,原因如下:
1.sizeof的计算发生在代码编译的时候;
2.extern是在链接的时候解析的。
所以extern数组的时候,在.C文件里面只知道有这么个东西,但是具体长啥样不知道,只有到链接的时候才能确定其大小。sizeof在编译的时候extern数组还没有链接,所以才会提示不允许使用不完整的类型。
解决方法:1.直接把变量定义在要用sizeof的文件中。
2.定义一个数组大小的宏。