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
se eu ainda não descrevi todos os casos de uso razoáveis, o que para enums anônimos deve ser usado?