有没有办法定义一个宏,将表达式(即int)转换为String文字?

dhe*_*ein 1 c macros

有没有办法把这样的定义:

#define PUTVAL 0x00

#define foo(x) ("x")

int main()
{
    char *szFoo = foo(PUTVAL);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并通过宏修改它,szFoo会指向包含"0x00"的字符串而不是"x"?

oua*_*uah 5

是的,你必须使用两个级别的宏,它被称为字符串化:

http://gcc.gnu.org/onlinedocs/cpp/Stringification.html

 #define xstr(s) str(s)
 #define str(s) #s
 #define foo 4
 str (foo)
      ==> "foo"
 xstr (foo)
      ==> xstr (4)
      ==> str (4)
      ==> "4"
Run Code Online (Sandbox Code Playgroud)