em quais situações deve ser usado um enum anônimo?

Tanto em c como em c ++enum poderia ser definido com tag

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

ou sem tag

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

Se foi definido com tag, faz sentidoswitch declarações em c e c ++:

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

vai produzir-Wswitch aviso se isso for compilado com gcc ou g ++.

Faz sentido em declarações de funções e inicialização de variáveis ​​em c ++:

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

Vai produzir-fpermissive erro se compilado com g ++.

Ambos os tipos com ou sem tag podem ser usados ​​como um arquivo#define macro sem parâmetros.

atualizar

poderia ser usado como um arquivo#define macro sem parâmetros

significava: em vez de escrever#define MAX 1000 no arquivo e adicionando MAX ao uso globalenum { MAX=1000 } apenas no escopo do arquivo

E sobre enums anônimos, eu encontrei apenas um caso de uso: definição comotypedef enum { a,b,c } some_t; faz com que funcione como enum com tag

Questão:

se eu ainda não descrevi todos os casos de uso razoáveis, o que para enums anônimos deve ser usado?

questionAnswers(3)

yourAnswerToTheQuestion