C:用字符串连接__COUNTER__

时间:2018-05-24 16:58:54

标签: c

我想将__COUNTER__字符串化并将其打印为字符串而不是整数,这可能吗?

printf("%s\n", #__COUNTER__);

我尝试过以下但是不起作用

hello.c:6:19: error: stray ‘#’ in program
printf("%s\n",#__COUNTER__);

2 个答案:

答案 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));