sah ich dieses Konstrukt in dem Projekt, das ich arbeite:Warum sollte eine enum-Deklaration const sein?
const enum SomeEnum
{
val0,
val1,
val2
};
Was ist der Zweck der const
hier?
sah ich dieses Konstrukt in dem Projekt, das ich arbeite:Warum sollte eine enum-Deklaration const sein?
const enum SomeEnum
{
val0,
val1,
val2
};
Was ist der Zweck der const
hier?
Nichts. Eigentlich ist es laut G ++ ein Compilerfehler:
error: qualifiers can only be specified for objects and functions
Allerdings ist in C erlaubt, aber nutzlos. GCC sagt:
warning: useless type qualifier in empty declaration
Das Problem ist, dass const
nur für Objekte gelten (Variablen) und die Elementfunktionen, aber nicht beschränkt auf Grundtypen.
Es macht keinen Unterschied in Ihrem Code machen, aber es wäre in diesem Fall:
const enum SomeEnum
{
val0,
val1,
val2
} VAL0 = val0;
Hier VAL0
wäre eine const
variabel sein (mit dem Wert val0
). TBH, aber es ist nicht von großem Nutzen.
Ich denke, es macht * einen Unterschied: "Es sollte nicht kompiliert werden". – Nawaz
@Nawaz Ich habe gesehen, dass es nicht kompiliert, aber das könnte nur der Compiler sein. Gibt es etwas in den Regeln dagegen? Ich habe gesehen, dass Compiler sowohl 'static struct X {}; –
Das gleiche wie 'const int;' oder ähnliches, würde ich mir vorstellen. – chris
Ich glaube, das ist ungültiger C++ - Code, aber Visual Studio akzeptiert es (GCC nicht). Darüber hinaus akzeptiert Visual Studio auch 'const Klasse A {/ * ... * /};'. –
Zugehöriger MSVC-Fehler: [MSVC const enum type] (http://stackoverflow.com/q/14923403) –