enum "Namen" ausgeben

HPB

Erfahrenes Mitglied
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
 
Hi.
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?
Nein, gibt es nicht. Nach der Kompilierung sind die ganzen Namen nur noch Schall und Rauch. Du könntest eine Lookuptabelle verwenden, ala
C++:
#define SYMBOL2NAME(e) { e, # e }

struct {
  X value;
  const char* name;
} tab_x2name[] = { 
  SYMBOL2NAME(constant1),
  SYMBOL2NAME(constant2),
  ...
};
Gruß
 
  • Gefällt mir
Reaktionen: HPB
Zurück