2016-03-24 21 views
0

Ich habe folgende Strukturgcc warnt vor „unbenannte struct/union, die keine Instanzen definiert“, aber die Struktur hat einen Namen

typedef struct VMCS 
{ 
    uint32_t revision; 
    uint32_t abortValue; 
} __attribute__ ((packed)) VMCS; 

wenn ich versuche, meinen Code ich diese Warnung von gcc zu kompilieren

warning: unnamed struct/union that defines no instances 

gefolgt von einer Reihe von Fehlern, die dadurch verursacht werden, dass VMCS nicht definiert ist. Der Code, der diesem vorangeht, ist sehr harmlos und besteht aus dem Einschließen von stdint.h und einer Anzahl von # define-Einträgen. Es scheint nicht so, als könnten diese Fehler verursachen, die die Struktur stören würden.

+2

Ist 'VMCS' auf jeden Fall als ein leeres Makro definiert? Es klingt definitiv wie es ist. – AnT

+0

Eine der wenigen allgemein anerkannten Namenskonventionen in C besteht darin, Großbuchstaben nur für Makros und _enum-constants_ zu verwenden. Ändern Sie die Namen und versuchen Sie es erneut. Alternativ können Sie die Präprozessor-Ausgabe überprüfen. – Olaf

Antwort

2

... und eine Reihe von #define Einträge

Offenbar definiert Sie VMCS als Makro mit Liste leer Ersatz. Ihr Code wird vom Compiler als

typedef struct 
{ 
    uint32_t revision; 
    uint32_t abortValue; 
} __attribute__ ((packed)); 

Daher die Warnung gesehen.