C - Deklaration von enums weiterleiten?

8

Vorwärts Deklaration von enums in C funktioniert nicht für mich. Ich habe das Internet und Stackoverflow durchsucht, aber alle Fragen bezüglich Vorwärtsdeklarationen von Enumeratoren beziehen sich auf C ++. Was tun Sie, um Enumeratoren in C zu deklarieren? Legen Sie sie am Anfang jeder Datei (oder in einem Include), damit alle Funktionen in der Datei auf sie zugreifen können? Danke

    
loop 20.09.2011, 04:39
quelle

2 Antworten

4

Fügen Sie sie in eine Kopfzeile ein, damit alle Dateien, die sie benötigen, auf die Kopfzeile zugreifen und die Deklarationen verwenden können.

Wenn mit den Optionen kompiliert:

%Vor%

GCC 4.2.1 (unter MacOS X 10.7.1) akzeptiert folgenden Code:

%Vor%

Fügen Sie -pedantic hinzu und warnt:

%Vor%

Sie sollten also nicht versuchen, Vorwärtsdeklarationen von aufgezählten Typen in C zu verwenden; GCC erlaubt es als Erweiterung, wenn es nicht gezwungen wird, pedantisch zu sein.

    
Jonathan Leffler 20.09.2011, 04:42
quelle
3

Sie können Enums nicht "weiterleiten", weil der Compiler die Größe der Enumeration nicht kennt. Der C-Standard besagt: "Jeder aufgezählte Typ muss mit char, einem vorzeichenbehafteten Integer-Typ oder einem vorzeichenlosen Integer-Typ kompatibel sein. Die Wahl des Typs ist implementationsdefiniert, muss jedoch die Werte aller Member von die Aufzählung ".

    
Foo Bah 20.09.2011 04:48
quelle