9

这是错误的代码

#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"));
}

为什么它会给出这个错误?我该如何解决?

编辑

这就是我想要做的

#define TAG                   "TAG"
#define PRE                   CAT(CAT("<",TAG),">")  
#define POS                   CAT(CAT("</",TAG),">") 

#define XML      CAT(CAT(PRE,"XML SOMETHING"),POS)   

然后

printf(XML); 
4

1 回答 1

9

的结果##必须是单个标记,而"HELLO""WORLD"不是单个标记。要连接字符串,只需将它们并排放置:

printf("HELLO" "WORLD");

或更改您的宏以删除##.

#define CAT(A, B) A B

当它们之间没有中间标记时,字符串文字被连接在一起。

于 2012-06-22T12:52:42.790 回答