Makro Argument in String verwandeln



  • Hallo!
    Ich hatte die Frage so ähnlich schon mal ins Linux forum gepostet, nur bekam ich da keine Antwort. Vielleicht kennt sich hier jemand mit Makros aus.

    Ich habe folgende Struktur:

    struct Foo
    {
       string Bar;
    };
    Foo Temp[2] = {{"Test"}, {"Test2"}};
    

    Und dass Makro soll jetzt bei MAKRO(Temp[0].Bar) "Test" zurückliefern, ich kenn mich mit Makros leider gar nicht aus, ich denke mal es ist recht einfach...

    Danke im voraus
    KaPtainCugel



  • das geht nicht, ist sinlos und ich hab überhaupt keine Ahnung davon



  • #include <iostream>
    
    #define SYMBOL2STR(x) #x
    
    int main() {
      std::cout << "hallo " << SYMBOL2STR(DU) << std::endl;
    }
    


  • Ich sehe den Zusammenhang zwischen #X und dem Originalposting irgendwie nicht...

    Warum muss es denn ein Makro sein?



  • Wenn das dein Code ist:

    struct Foo
    {
       string Bar;
    };
    Foo Temp[2] = {{"Test"}, {"Test2"}};
    

    und das Makro so aussehen soll MAKRO(Temp[0].Bar) und dann "Test", also den Wert zurückliefern soll, den du übergeben hast, dann Sieht das für mich so aus:

    #define MAKRO(foo) foo
    
    struct Foo
    {
       string Bar;
    };
    Foo Temp[2] = {{"Test"}, {"Test2"}};
    
    int main () 
    {
       cout << MAKRO(Temp[0].Bar) << '\n';
    }
    

    Das kann es aber irgendwie nicht sein. Erklär bitte nochmal, was du genau willst.



  • Das Problem war ursprünglich mal ein anderes, da hatte ich noch Zeiger auf Methoden, statt dem std::string, war natürlich dass jetzt soweit zu verändern, dass es keinen Sinn mehr ergibt. Aber ich denke ich habe jetzt eine Lösung, danke trotzdem!


Anmelden zum Antworten