C:typedef union

在相关问题中找不到任何相关内容。 最有可能的是它的超级菜鸟,但无论如何我都会问/我的.h文件中有以下内容:

typedef union _API_Packet_0x90{ uint8_t packet[26]; struct _pack_struct { uint8_t start; uint8_t length[2]; uint8_t addr64[8]; uint8_t addr16[2]; uint8_t options; uint8_t rfData[4]; uint8_t chksum; }; } API_Packet_0x90; API_Packet_0x90 ap90; 

这是微控制器的代码,我使用的是xc8工具链(以前的Hi Tech C)。 编译器说:

xbee_api.h:19:警告:缺少基本类型; int假设
xbee_api.h:19:错误:“;” 预期
xbee_api.h:19:警告:缺少基本类型; int假设
xbee_api.h:21:警告:缺少基本类型; int假设

,这继续(错误太多)

我认为这是uint8_t,所以我添加了#include 。 不。 我以为这是关于名字的,所以我尝试了各种各样的戏剧,比如

 typedef union { uint8_t packet[26]; struct _pack_struct { }; } API_Packet_0x90; 

要么

 typedef union { uint8_t packet[]; struct _pack_struct { }; } API_Packet_0x90; 

或其他人。 什么都没有帮助。 我被卡住,因为我相信我正在遵循语法。 有帮助吗?

uint8_t位于stdint.h ,而不是ctype.h (也不是ctypes.h,不存在这样的头)。 您必须使用遵循较新版本C标准的编译器才能找到此标头(C99或C11标准)。