C:将__COUNTER__与字符串连接

q9rjltbz  于 2023-05-16  发布在  其他
关注(0)|答案(2)|浏览(116)

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

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

我尝试了以下方法,但不起作用。

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

toe950271#

是的,但它需要间接访问,因为你不能在宏之外使用#操作符。

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

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

double宏需要扩展__COUNTER__,否则结果将是"__COUNTER__"
如果你不想重新发明轮子,那正是BOOST_PP_STRINGIZE所做的。

z9gpfhce

z9gpfhce2#

你必须用一个预处理器宏将其字符串化。

#define XSTR(s) STR(s)
#define STR(s) #s
printf("%s", XSTR(counter));

相关问题