Ho visto questo costrutto nel progetto Lavoro:Perché una dichiarazione enum dovrebbe essere marcata const?
const enum SomeEnum
{
val0,
val1,
val2
};
Qual è lo scopo della const
qui?
Ho visto questo costrutto nel progetto Lavoro:Perché una dichiarazione enum dovrebbe essere marcata const?
const enum SomeEnum
{
val0,
val1,
val2
};
Qual è lo scopo della const
qui?
Niente affatto. In realtà, secondo G ++ è un errore del compilatore:
error: qualifiers can only be specified for objects and functions
Tuttavia, in C è consentito, ma inutile. GCC dice:
warning: useless type qualifier in empty declaration
Il problema è che const
applica solo agli oggetti (variabili) e le funzioni membro, ma non per tipi di base.
Non fa una differenza nel codice, ma sarebbe in questo caso:
const enum SomeEnum
{
val0,
val1,
val2
} VAL0 = val0;
Qui, VAL0
sarebbe un const
variabili (con il valore val0
). Tuttavia, TBH non è di grande utilità.
Penso che * fa * faccia la differenza: "non dovrebbe compilare". – Nawaz
@Nawaz Ho visto che non è stato compilato, tuttavia potrebbe essere solo il compilatore. C'è qualcosa nelle regole contro di esso? Ho visto compilatori che accettano e rifiutano 'struct statico X {};'. –
La stessa cosa di fare 'const int;' o simili che immaginerei. – chris
Credo che questo sia un codice C++ non valido ma Visual Studio lo accetta (GCC no). Inoltre, Visual Studio accetta anche 'const class A {/ * ... * /};'. –
Errore MSVC correlato: [tipo const enum MSVC] (http://stackoverflow.com/q/14923403) –