2016-04-21 18 views
9

Wir können Klasse/Struktur innerhalb einer Funktion definieren. Können wir auch enum und union innerhalb einer Funktion definieren?Können wir Enum innerhalb einer Funktion definieren?

void fun() { 
    enum {BIG, MID, SMALL}; 
    // other code. 
} 

Ich kann den Code mit gcc 4.8.2 kompilieren, aber ich bin mir nicht sicher, ob es legal ist.

+2

finden es ist legal . sicher sein – nikniknik2016

Antwort

13

Ja, es ist vollkommen in Ordnung, eine Enum in einer Funktion zu definieren. Ihr Code zeigt eine vollkommen legale anonyme Enum-Deklaration.

Strukturen und Klassen können auch innerhalb einer Funktion deklariert werden (und können auch anonym sein). Die einzige Einschränkung bei Typen, die innerhalb einer Funktion (und nicht im Namensbereich oder Klassenbereich) deklariert sind, ist, dass sie nicht als Vorlagenparameter verwendet werden können.

more information onEnumeration

C 11 ++ ab

Nun, die Einschränkung in Bezug auf Template-Parameter, da C++ 11 kann für weitere Informationen über Template-Parameter geändert wurde, auf Link Template Parameters

+2

* Könnte * nicht als Vorlage Parameter verwendet werden. – Quentin

+3

Diese Beschränkung hat sich seit C++ 11 geändert: [Demo] (http://coliru.stacked-crooked.com/a/ef41907c81b5502f) – Jarod42

+0

vielen Dank! –

Verwandte Themen