我想对__COUNTER__进行字符串化,并将其打印为字符串而不是整数。这可能吗?
__COUNTER__
printf("%s\n", #__COUNTER__);
我尝试了以下方法,但不起作用。
hello.c:6:19: error: stray ‘#’ in program printf("%s\n",#__COUNTER__);
toe950271#
是的,但它需要间接访问,因为你不能在宏之外使用#操作符。
#
#define STRINGIFY_2(a) #a #define STRINGIFY(a) STRINGIFY_2(a) printf("%s\n", STRINGIFY(__COUNTER__));
double宏需要扩展__COUNTER__,否则结果将是"__COUNTER__"。如果你不想重新发明轮子,那正是BOOST_PP_STRINGIZE所做的。
"__COUNTER__"
BOOST_PP_STRINGIZE
z9gpfhce2#
你必须用一个预处理器宏将其字符串化。
#define XSTR(s) STR(s) #define STR(s) #s printf("%s", XSTR(counter));
2条答案
按热度按时间toe950271#
是的,但它需要间接访问,因为你不能在宏之外使用
#
操作符。double宏需要扩展
__COUNTER__
,否则结果将是"__COUNTER__"
。如果你不想重新发明轮子,那正是
BOOST_PP_STRINGIZE
所做的。z9gpfhce2#
你必须用一个预处理器宏将其字符串化。