【发布时间】:2017-07-13 16:55:19
【问题描述】:
我正在使用宏并写了一个这样的:
#define STR(name) #name
我的意思是 STR() 将作为参数提供给它的任何东西都串起来,它似乎正在工作。
printf( STR(Hello) )
按预期给出输出:
Hello
原来如此
printf( STR(Hello world) );
printf( STR(String) STR(ise) );
给了
Hello world
Stringise
但是当我尝试使用STR() 来打印一个空格时,它就不起作用了。
printf( STR(Hello) STR( ) STR(World) ); //There’s a space between the parenthesis of the second STR
给出输出:
HelloWorld
这里STR( ) 被忽略了。
这是为什么?有没有办法解决它,同时仍然坚持只用空格作为参数的宏?
我只是想知道这是否可能。
【问题讨论】:
-
@DavidC.Rankin 我做到了。
printf( STR(Hello) STR(" ") STR(world) );像Hello" "world一样打印引号。我只想要空间。 -
STR( )-->" " -
@J...S - 啊 - 它也打印文字引号。这是个问题
:) -
空白不是实际参数。类似于
,。 -
你能给出这样一个#define的理由吗?你为什么要努力让你的生活变得更艰难?>