Heim > Backend-Entwicklung > C++ > Können C-Enums vorwärts deklariert werden und wenn ja, wie und wann?

Können C-Enums vorwärts deklariert werden und wenn ja, wie und wann?

Susan Sarandon
Freigeben: 2024-12-19 17:37:14
Original
339 Leute haben es durchsucht

Can C   Enums Be Forward Declared, and If So, How and When?

Vorwärtsdeklaration von Aufzählungen in C: Erkundung der Einschränkungen und Alternativen

Vorwärtsdeklaration von Aufzählungen, eine Funktion, die es uns ermöglicht, die vollständige Definition eines Aufzählungstyps auf zu verschieben später im Code ist in bestimmten Szenarien eine wünschenswerte Funktion. In C wurde diese Funktionalität jedoch bis zur Einführung von C 11 nicht unterstützt.

Grund für die Einschränkung:

In C 03 und früheren Versionen waren Aufzählungen implizit Die Größe richtet sich nach ihrem Inhalt. Das bedeutete, dass der Compiler den vollständigen Satz von Enum-Werten kennen musste, um den richtigen Speichertyp zu bestimmen. Da die Forward-Deklaration nur den Enum-Namen angibt, war es nicht möglich, die Größe des Enums abzuleiten, daher das Verbot.

C 11 Forward-Deklaration:

C 11 führte das Konzept ein, die Größe einer Aufzählung mithilfe der Aufzählung explizit anzugeben: ; Syntax. Dadurch können wir Deklarationsaufzählungen weiterleiten, solange ihre Größe im Voraus angegeben wird:

enum Enum2 : unsigned int;      // Legal in C++11, size explicity specified
Nach dem Login kopieren

Darüber hinaus bietet das in C 11 eingeführte Schlüsselwort enum class auch eine Möglichkeit, Deklarationsaufzählungen weiterzuleiten, da es einen Standardwert zuweist Typ „int“ zur Aufzählung.

enum class Enum3;               // Legal in C++11, default type is "int"
Nach dem Login kopieren

Alternative Ansätze:

Wenn eine Vorwärtsdeklaration aus Gründen der Abwärtskompatibilität oder aus anderen Gründen nicht möglich ist, gibt es alternative Ansätze, um eine ähnliche Kapselung zu erreichen:

  • Verwenden Sie eine Klasse anstelle einer Aufzählung.
  • Verwenden Sie eine Typdefinition, um eine symbolische Konstante für die Aufzählung zu erstellen Typ.
  • Verwenden Sie Makros, um Aufzählungswerte darzustellen.

Fazit:

Vorwärtsdeklaration von Aufzählungen ist in C 11 und späteren Versionen möglich durch explizite Angabe der Enum-Größe. In früheren Versionen von C können alternative Techniken eingesetzt werden, um eine ähnliche Kapselung zu erreichen.

Das obige ist der detaillierte Inhalt vonKönnen C-Enums vorwärts deklariert werden und wenn ja, wie und wann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage