¿En qué situaciones se debe utilizar enumeración anónima?

En c y c ++enum podría definirse con etiqueta

<code>enum e_smth {
    smth_one,
    smth_two,
    smth_err
};
</code>

o sin etiqueta

<code>enum {
    smth_one,
    smth_two,
    smth_err
};
</code>

Si fue definido con etiqueta tiene sentido enswitch declaraciones tanto en c como en c ++:

<code>e_smth some_var;
....//do some stuff with some_var
switch (some_var)
{
case smth_one:
break;
case smth_two:
break;
}
</code>

Producirá-Wswitch advertencia si esto será compilado con gcc o g ++.

Tiene sentido en las declaraciones de funciones y la inicialización de variables en c ++:

<code>e_smth var;
var=99;
</code>

Producirá-fpermissive error si se compila con g ++.

Ambos tipos con o sin etiqueta podrían usarse como un archivo#define Macro sin parámetros.

actualizar

podría ser utilizado como un archivo#define macro sin parametros

significado: en lugar de escribir#define MAX 1000 en archivo y añadiendo MAX al uso globalenum { MAX=1000 } solo en el alcance del archivo

Y ¿qué pasa con las enumeraciones anónimas, he encontrado un solo caso de uso: definición comotypedef enum { a,b,c } some_t; hace que funcione como enum con etiqueta

Pregunta:

Si aún no he descrito todos los casos de uso razonables, ¿qué debo usar para las enumeraciones anónimas?

Respuestas a la pregunta(3)

Su respuesta a la pregunta