我想将__COUNTER__
字符串化并将其打印为字符串而不是整数,这可能吗?
printf("%s\n", #__COUNTER__);
我尝试过以下但是不起作用
hello.c:6:19: error: stray ‘#’ in program
printf("%s\n",#__COUNTER__);
答案 0 :(得分:3)
是的,但它需要间接,因为您不能在宏之外使用#
运算符。
#define STRINGIFY_2(a) #a
#define STRINGIFY(a) STRINGIFY_2(a)
printf("%s\n", STRINGIFY(__COUNTER__));
展开__COUNTER__
需要双倍宏,否则结果为"__COUNTER__"
。
如果您不想重新发明那个轮子,那正是BOOST_PP_STRINGIZE
所做的。
答案 1 :(得分:1)
您必须使用预处理器宏对其进行字符串化。
#define XSTR(s) STR(s)
#define STR(s) #s
printf("%s", XSTR(counter));