Präprozessor Makro als String auf Konsole ausgeben?

DarthShader

Erfahrenes Mitglied
Hallo,

folgende Situation: ich habe ein Makro welches so definiert wird:

Code:
  #define PREFIX foo

(In "Wirklichkeit" wird es nicht so definiert, sondern durch das Buildsystem dem Compiler per -D Flag mitgegeben).

Nun meine "simpler Wunsch":
Ich möchte den Inhalt von PREFIX (was ja "foo" ohne Anführungszeichen ist) per cout ausgeben.

Wie mache ich das? :)

(Ich kann das, was dem Compiler mit -D übergeben wird, ändern, jedoch dürften dort keine Anführungszeichen benutzt werden).


Vielen Dank für Eure Hilfe!
 
Hallo,

da ich nicht weiß ob der Präprozessor standardisiert ist gehe ich bei dir einfach
mal davon aus das du den gcc verwendest, wenn ja schaumal hier:

C++:
#include <iostream>

/* Makro Level 0: wird gebraucht damit s vor str(s) auch expandiert wird */
#define xstr(s) str(s)

/* Makro Level 1: hier wird s "stringifiziert" aber nicht expandiert! */
#define str(s) #s

int main()
{
    std::cout << str(PREFIX) << std::endl;
    std::cout << xstr(PREFIX) << std::endl;
}

Siehe auch:
http://gcc.gnu.org/onlinedocs/cpp/Stringification.html#Stringification

Gruß,
RedWing
 
Zurück