Dha*_*tri 7 c macros stringification c-preprocessor
我想知道这段代码输出背后的原因.我无法想出答案.
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)
void main()
{
printf("%s %s",h(f(1,2)),g(f(1,2)));
}
Run Code Online (Sandbox Code Playgroud)
PS:输出是12 f(1,2).我以为是12 12或f(1,2) f(1,2).
h(f(1,2))
Run Code Online (Sandbox Code Playgroud)
f(1,2)替代a.a不是一个#或##运营商的主题,所以它扩展到12.现在你g(12)扩展到了"12".
g(f(1,2))
Run Code Online (Sandbox Code Playgroud)
f(1,2)替代a.的#操作者施加到a防止宏扩展,所以结果是字面上"f(1,2)".