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?
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
Vous devez vous connecter pour publier un commentaire.
uint8_t
est situé dansstdint.h
, pas dansctype.h
(ni ctypes.h, aucun en-tête existe). Vous devez utiliser un compilateur qui suit une version plus récente de la norme pour cet en-tête se trouve (C99 ou C11 normes).Ou ajouter une définition de votre propre pour le type de données inconnu. Il n'y a pas d'obligation d'utiliser un compilateur qui suit une version plus récente de la norme. Ou de rechercher et de remplacer le type de données à un autre, le compilateur sait. Vous avez le choix.
Bien sûr, vous pouvez définir le type de vous, je n'ai pas dit quoi que ce soit à la contredisent. Mais pour trouver l'en-tête stdint.h vous devez utiliser un nouveau compilateur, comme écrit dans mon post.
d'accord.
OriginalL'auteur Lundin