我一直在試圖理解宏擴展,並發現第二個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