# enum "Namen" ausgeben



## HPB (23. November 2009)

Hallo,
ich habe ein enum, bspw.
enum X
{
 constant1 = 1,
 constant2 = 2,
...
}

Meine Anwendung schreibt ein trace file mit infos. Gibt es eine einfache Möglichkeit die
Namen statt der Werte auszugeben?

Bspw sollte im Trace "constant1" stehen statt "1", wenn ich constant1 in den output stream schreibe. Einen Helper, der intern ein mapping auf strings macht, finde ich nicht gut, weil man ihn jedesmal wieder anpssen muss (class outputEnum { ...if(value==1) return "constant1"; if(value==2) return "constant2),...}

Gruß,
Peter


----------



## deepthroat (23. November 2009)

Hi.





HPB hat gesagt.:


> Hallo,
> ich habe ein enum, bspw.
> enum X
> {
> ...


Nein, gibt es nicht. Nach der Kompilierung sind die ganzen Namen nur noch Schall und Rauch. Du könntest eine Lookuptabelle verwenden, ala

```
#define SYMBOL2NAME(e) { e, # e }

struct {
  X value;
  const char* name;
} tab_x2name[] = { 
  SYMBOL2NAME(constant1),
  SYMBOL2NAME(constant2),
  ...
};
```
Gruß


----------

