我想将其字符串化__COUNTER__并将其打印为字符串而不是整数。那可能吗?
printf("%s\\n", #__COUNTER__);\nRun Code Online (Sandbox Code Playgroud)\n我已经尝试过以下方法,但它不起作用。
\nhello.c:6:19: error: stray \xe2\x80\x98#\xe2\x80\x99 in program\nprintf("%s\\n",#__COUNTER__);\nRun Code Online (Sandbox Code Playgroud)\n
是的,但它需要间接寻址,因为您不能#在宏之外使用运算符。
#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。
| 归档时间: |
|
| 查看次数: |
741 次 |
| 最近记录: |