一、现象:
首先在文件1.c对应的头文件1.h中有
union _uintbyte
{
UINT16 _uint;
UINT8 _uchar[2];
} Angle;
如果想在文件2.c中调用变量Angle就必须用到变量的外部调用,也就是想到用extern 。
然而,在文件2.c对应的头文件2.h中这样写:
1、
extern _uintbyte Angle;
编译通不过。
2、
extern union _uintbyte
{
UINT16 _uint;
UINT8 _uchar[2];
} Angle;
同样编译通不过。
二、原因:
extern后面必须跟数据类型,使用共用体名称(如_uintbyte)是无效的。
三、解决方法:
将union _uintbyte使用typedef 进行类型定义,即:
在头文件3.h中定义:
typedef union _uintbyte
{
UINT16 _uint;
UINT8 _uchar[2];
};
在文件1.c中引用3.h,在1.c对应的头文件1.h中:
_uintbyte Angle;
那么在文件2.c中也引用3.h,在2.c对应头文件2.h中:
extern _uintbyte Angle;
编译通过!!!!