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
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:
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.
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 ".
Tags und Links c enumeration enums forward-declaration