Jeff Abrahamson on Thu, 21 Nov 2002 22:10:05 -0500 |
I'm trying to write a C macro like this: #define set(x) { x##_ = 1; printf("The variable "##x##"_ is set.\n"); } So then I want to be able to say set(dog); set(cat); and have it expand to { dog_ = 1; printf("The variable dog_ is set.\n"); }; { cat_ = 1; printf("The variable cat_ is set.\n"); }; Unfortunately, the incantation in the printf doesn't work. The real example, naturally, is complicated enough to warrant wanting to get this right. Indeed, the real example generates quite a bit of code, including several whole functions. All of which works except the printf. Note that the two obvious answers #define p(x) printf("x"); #define q(x) printf("%s", x); p(dog); q(cat); expand respectively to the following (incorrect) code: printf("x"); /* x, not dog */ printf("%s", cat); /* cat, not "cat" */ Any ideas? -- Jeff Jeff Abrahamson <http://www.purple.com/jeff/> GPG fingerprint: 1A1A BA95 D082 A558 A276 63C6 16BF 8C4C 0D1D AE4B Attachment:
pgpHPID1hT0dS.pgp
|
|