/*********************************************
*關於#和##的特殊用法:在宏定義中,使用前綴#,
*宏展開時 ,會把修飾的符號自動在兩邊加上雙引號
*把它展開爲字符串,而##則是把兩端的符號連接起
*來,但是不會繼續展開爲字符串,eg如下所示
********************************************/
#include <stdio.h>
#define printf_x(x) printf(#x"=%s\n",#x);
#define sort(x) Sort ## x
void Sort0()
{
printf("sort0");
}
void Sort1()
{
printf("sort1");
}
void Sort2()
{
printf("sort2");
}
void Sort3()
{
printf("sort3");
}
void Sort4()
{
printf("sort4");
}
int main(int argc, char *argv[])
{
/* #h號示例 */
printf_x(doyouknow?);
/* ##號示例 */
sort(4)();
return 0;
}
結果圖: