我有一個程序。C中'#'究竟做了什麼?
#include <stdio.h>
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)
int main()
{
printf("%s\n",h(f(1,2)));
printf("%s\n",g(f(1,2)));
return 0;
}
該程序正常工作,並給予輸出:
12
f(1, 2)
我不明白編譯器如何給這個輸出。
#在a##b
和#a
中有什麼功能?
http://stackoverflow.com/questions/16989730/c-stringify-how-does-it-work –
@YuHao,我真的很抱歉。我搜索了這個問題。我沒有得到任何關聯。因爲我不知道#被稱爲stringify。 – SGG
@SGG嘿,沒關係,因爲很難搜索這個問題,因爲沒有特定的關鍵字。我記得之前看過這個程序,仍然花了幾分鐘的時間來找到重複的東西:)即使知道'#'和'##'的基本用法,這個問題仍然很難得到。 –