C:typedef union

时间:2013-01-07 14:34:25

标签: c typedef microcontroller unions microchip

在相关问题中找不到任何内容。最有可能的是它的超级菜鸟,但无论如何我都会问/我的.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 <ctypes.h>。不。我认为这是关于名字,所以我尝试了各种各样的戏剧,如

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

    };
} API_Packet_0x90;

typedef union {
    uint8_t packet[];
    struct _pack_struct {

    };
} API_Packet_0x90;

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

1 个答案:

答案 0 :(得分:7)

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