C: typedef union

ne trouve rien dans les questions connexes. Très probablement, il est super noob, mais je vais la poser quand même/j'ai la suite dans ma .h fichier:

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;

C'est le code pour un microcontrôleur, je suis en utilisant xc8 de la chaîne (ex-Hi-Tech C). Le compilateur dit:

xbee_api.h:19: warning: missing type de base; int supposé
xbee_api.h:19:
erreur: ";" attendu
xbee_api.h:19: warning: missing type de base; int supposé
xbee_api.h:21: warning: missing type de base; int supposé

et ce qui se passe (trop d'erreurs)

Je pensais que c'est u_int8_t, j'ai donc ajouté #include <ctypes.h>. Nope. Je pensais que c'est au sujet des noms, alors j'ai essayé toutes sortes de pièces de théâtre telles que

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

    };
} API_Packet_0x90;

ou

typedef union {
    uint8_t packet[];
    struct _pack_struct {

    };
} API_Packet_0x90;

ou autres. Rien n'y fait. Je suis coincé car je crois que je suis en suivant la syntaxe correctement. Toute aide?

Comment savez-vous que vous ajouté défini u_int8_t ? Peut-être essayer d'ajouter "typedef unsigned char u_int8_t;" avant cette définition... soit il va l'aider ou il va se plaindre que vous êtes la redéfinir.
Vous avez probablement besoin de #include <stdint.h> pour uint8_t.
xbee_api.h:19: pouvez vous aussi donner les numéros de ligne de votre code? au moins le numéro de la première ligne? Afin que nous puissions savoir, la ligne en donnant problème.
Si _pack_struct est une abréviation de "structure de paquet", je ne vous le conseille peur, il est confondu avec la "structure compacte", qui est une chose différente.

OriginalL'auteur dccharacter | 2013-01-07