我一直在试图理解宏扩展,并发现第二个printf给出了一个错误。我期待第二次印刷声明产生与第一次相同的输出。我知道有函数可以进行字符串连接。我发现很难理解为什么第一次打印声明有效,第二次打印声明不起作用。宏扩展中的错误
#define CAT(str1, str2) str1 str2
void main()
{
char *string_1 = "s1", *string_2 = "s2";
printf(CAT("s1", "s2"));
printf(CAT(string_1, string_2));
}
此问题与最轻微的宏无关。 – Lundin
[可能的重复](http://stackoverflow.com/questions/10295634/c-string-concatenation-of-constants)。 – Lundin