C: объединение typedef

ничего не нашел в смежных вопросах. Скорее всего, это супер noob, но я все равно спрошу / у меня есть следующее в моем файле .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; 

Это код для микроcontrollerа, я использую toolchain xc8 (бывший Hi Tech C). Компилятор говорит:

xbee_api.h: 19: предупреждение: отсутствует базовый тип; int предположил
xbee_api.h: 19: error: “;” ожидаемый
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).