Thread Stringification: im Gnu C Präprozessor (12 answers)
Opened by betterworld at 2003-11-15 22:32

betterworld
 2003-11-15 22:32
#11561 #11561
User since
2003-08-21
2613 articles
ModeratorIn

user image
Kann man Makros, die z. B. Zahlen darstellen, zu Strings machen? Die Dokumentation beschreibt eine Methode fur Makroargumente. Die funktioniert aber auch wirklich nur fuer Makroargumente, nicht fuer Makros. Beispiel aus der Dokumenation:
Code: (dl )
1
2
3
4
     #define WARN_IF(EXP) \
    do { if (EXP) \
            fprintf (stderr, "Warning: " #EXP "\n"); } \
    while (0)


Was ich aber gerne haette, ist folgendes:
Code: (dl )
1
2
3
4
5
6
7
8
#define MAX_RECURSIONS 40

...

if(rec > MAX_RECURSIONS){
 fprintf(stderr, "Too many recursions (" #MAX_RECURSIONS ")\n");
 exit(1);
}


Das funktioniert aber nicht. Okay, ich koennte natuerlich ein %d einfuegen und fprintf die Zahl in einen String wandeln lassen. Das passiert aber dann zur Laufzeit und ist so furchtbar langsam ;) ;) Es kommt mir halt darauf an, dass es doch theoretisch eine "schoene" Loesung geben muesste.

Danke fuer Antwort

View full thread Stringification: im Gnu C Präprozessor