Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

C: variabelname generieren

frocco / 3 Antworten / Flachansicht Nickles

Hallo
Ich habe einen generierten Text in einem Array. Nun möchte ich mit einer Variable (oder Pointer) auf die Variable verweisen, deren Name dem Text in meinem Array entspricht.
geht das?

bei Antwort benachrichtigen
mr.escape frocco „ich habe folgendes problem: ich habe mehrere variablen mit daten daten0, daten1,...“
Optionen

Die variablennamen sind nach dem kompilieren bestenfalls noch als debug information vorhanden. Eine lösung wäre das eigenhändige abspeichern der beziehung "name"->adresse in einem array.
So in der art:

typedef struct {

char *name;
void *addr;
} NameAdrRel;
int daten0, daten1, daten2, daten3, daten4, daten5;
NameAdrRel nar[]={
{"daten0", &daten0},
{"daten1", &daten1},
{"daten2", &daten2},
{"daten3", &daten3},
{"daten4", &daten4},
{"daten5", &daten5},
{NULL, NULL}//hier das ende oder mit sizeof(nar)/sizeof(NameAdrRel) die anzahl berechnen
};

Die einzelnen einträge können auch von einem macro erzeugt werden, wo der variablenname nur einmal angegeben werden muss.
#define NAR(x) {#x, &x}
Damit wird ein eintrag zu
NameAdrRel nar[]={

NAR(daten0),
NAR(daten1),
NAR(daten2),
NAR(daten3),
NAR(daten4),
NAR(daten5),
{NULL, NULL}
};

Habe es aber nicht probiert, kann also auch etwas anders lauten und evtl. nur mit einem c++ preprozessor laufen.

Die auswertung selbst läuft dann durch textvergleich und typecasting der adresse. Ein vorsortieren zur laufzeit und suche mit intervallschachtelung sollte für das tempo sorgen.

mr.escape
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen