Variablenname als #define interpretieren



  • Hallo zusammen,

    habe mal eine dumme Frage 🙂
    Kann man den Wert in einer Variable als #define interpretieren? Genauer...

    Ich habe z.B. eine Definition

    #define MAX_VALUE  100
    

    Ich bekomme in einer Methode nun einen String übergeben, der folgendermaßen ausgebaut ist...

    void setMaxValue(AnsiString asValue)
    {
       //In asValue ist nun der String "MAX_VALUE" verpackt
       //Wenn ich jetzt z.B. auf ein Array zugreifen möchte, dann würde ich nun
       //gerne den Wert des #defines nutzen
    
        array[InterpretiereAlsDefine(asValue)];
    
       //Er sollte also nun auf das 100. Element zugreifen
    }
    

    Ist schon doof, da ich leider nur den Namen des Defines in der AnsiString-Variable habe. Ich weiß jetzt leider nicht, wie ich sonst auf den INT-Wert zugreifen kann.

    Ich denke ja nicht dass das geht, aber fragen schadet ja nix.
    Gruß



  • Hallo

    Nein das geht so nicht. Zur Laufzeit sind in C++ keine Symbolnamen mehr bekannt, und schon gar nicht die Namen von Prä-Compiler-Sachen wie defines.
    Vermutlich kannst du auch gleich ganz auf das define verzichten (in C++ sollte man wenn überhaupt sowieso eher globale Konstanten verwenden). Verwende stattdessen eine std::map<String, int>, in die du deine Namen/Werte-Kombinationen einmalig einträgst. Dann kannst du jederzeit in dieser map nach dem String suchen lassen.

    bis bald
    akari


Anmelden zum Antworten