C: typedef union
habe nichts gefunden in Verwandte Fragen. Wahrscheinlich ist es super noob, aber ich werde Sie trotzdem bitten/ich habe die folgenden in meine .h-Datei:
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;
Dies ist der code für einen mikrocontroller, ich bin mit xc8 toolchain (ehemalige Hi-Tech C). Der compiler sagt:
xbee_api.h:19: warning: missing basic type; int angenommen
xbee_api.h:19:
Fehler: ";" erwartet
xbee_api.h:19: warning: missing basic type; int angenommen
xbee_api.h:21: warning: missing basic type; int angenommen
und das geht auf (zu viele Fehler)
Ich dachte, es ist uint8_t, also fügte ich #include <ctypes.h>
. NÖ. Ich dachte, es ist über Namen, also habe ich versucht, alle Arten von Stücken wie
typedef union {
uint8_t packet[26];
struct _pack_struct {
};
} API_Packet_0x90;
oder
typedef union {
uint8_t packet[];
struct _pack_struct {
};
} API_Packet_0x90;
oder andere. Nichts hilft. Ich bin stecken, wie ich glaube, ich bin folgende syntax richtig. Keine Hilfe?
Sie müssen wahrscheinlich
#include <stdint.h>
für uint8_t
.xbee_api.h:19:
können Sie auch geben die Zeilennummern des Codes? zumindest die Zahl der ersten Zeile? Damit wir wissen, welche Zeile was problem.Wenn
_pack_struct
ist eine Abkürzung von "packet-Struktur", ich würde davon abraten damit es nicht verwechselt wird mit "gepackten Struktur", das ist eine andere Sache.InformationsquelleAutor dccharacter | 2013-01-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
uint8_t
befindet sich instdint.h
, nicht inctype.h
(noch ctypes.h, kein solcher header vorhanden ist). Sie müssen ein compiler folgt, dass eine neuere version der C-Norm für diesen header zu finden sind (C99 oder C11-standards).Oder fügen Sie einen definieren Sie Ihre eigenen für die unbekannten Datentyp. Es ist nicht erforderlich, verwenden Sie einen compiler folgt, dass eine neuere version der C-standard. Oder suchen Sie und ersetzen Sie den Datentyp mit einem anderen compiler kennt. Sie haben die Wahl.
Natürlich können Sie definieren den Typ selbst, ich habe nichts gesagt, zu widersprechen. Aber finde der header stdint.h verwenden Sie einen neueren compiler, geschrieben in meinem post.
vereinbart.
InformationsquelleAutor Lundin