em quais situações deve ser usado um enum anônimo?
Tanto em c como em c ++enum
poderia ser definido com tag
enum e_smth {
smth_one,
smth_two,
smth_err
};
ou sem tag
enum {
smth_one,
smth_two,
smth_err
};
Se foi definido com tag, faz sentidoswitch
declarações em c e c ++:
e_smth some_var;
....//do some stuff with some_var
switch (some_var)
{
case smth_one:
break;
case smth_two:
break;
}
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 ++:
e_smth var;
var=99;
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?