C:将 __COUNTER__ 与字符串连接

Har*_*Har 0 c

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

\n
printf("%s\\n", #__COUNTER__);\n
Run Code Online (Sandbox Code Playgroud)\n

我已经尝试过以下方法,但它不起作用。

\n
hello.c:6:19: error: stray \xe2\x80\x98#\xe2\x80\x99 in program\nprintf("%s\\n",#__COUNTER__);\n
Run Code Online (Sandbox Code Playgroud)\n

Que*_*tin 5

是的,但它需要间接寻址,因为您不能#在宏之外使用运算符。

#define STRINGIFY_2(a) #a
#define STRINGIFY(a) STRINGIFY_2(a)

printf("%s\n", STRINGIFY(__COUNTER__));
Run Code Online (Sandbox Code Playgroud)

double 宏需要展开__COUNTER__,否则结果会是"__COUNTER__"

如果你不想重新发明轮子,那就这么做吧BOOST_PP_STRINGIZE