iar中extern 对象在.h里面定义为什么不能声明16位和8位整形
时间: 2024-03-30 20:36:39 浏览: 139
STM8 IAR 位操作库 iostm8xxxx.h
iar中与其他编译器一样,extern对象在头文件(.h文件)中定义时,也不能声明为16位或8位整型。这是因为C语言规定,变量的大小必须是一个存储单元的整数倍,比如char类型占用1个存储单元,short类型占用2个存储单元,int类型占用4个存储单元等。
如果在头文件中定义一个16位或8位的extern对象,编译器会自动将其对齐到一个存储单元的整数倍,如果实际的存储单元大小小于声明的变量大小,就会导致变量访问越界,从而产生不可预期的结果。因此,为了避免这种情况的发生,我们通常在头文件中定义extern对象时,会使用较为通用的数据类型,比如int或者long等,以确保代码的正确性和可移植性。
阅读全文