这是错误的代码
#include<stdio.h>
#define CAT_I(A, B) A ## B
#define CAT(A, B) CAT_I(A,B)
void main (void)
{
printf(CAT("HELLO","WORLD"));
}
Run Code Online (Sandbox Code Playgroud)
为什么会出错?我该怎么办呢?
编辑
这就是我想要做的
#define TAG "TAG"
#define PRE CAT(CAT("<",TAG),">")
#define POS CAT(CAT("</",TAG),">")
#define XML CAT(CAT(PRE,"XML SOMETHING"),POS)
Run Code Online (Sandbox Code Playgroud)
然后
printf(XML);
Run Code Online (Sandbox Code Playgroud)
结果##必须是单个令牌,并且"HELLO""WORLD"不是单个令牌.要连接字符串,只需将它们放在一起:
printf("HELLO" "WORLD");
Run Code Online (Sandbox Code Playgroud)
或者更改宏以删除##.
#define CAT(A, B) A B
Run Code Online (Sandbox Code Playgroud)
当字符串文字之间没有中间标记时,它们会连接在一起.