“##”把兩個獨立的字符串連接成一個字符串:
#include <stdio.h>
#define SORT(type) sort_##type
void sort_int(int **i);
void sort_long(long **l);
void sort_float(float **f);
void sort_char(char **c);
void main(void);
void main(void)
{
int **ip;
long **lp;
float **fp;
char **cp;
…
SORT(int)(ip);
SORT(long)(lp);
SORT(float)(fp);
SORT(char)(cp);
…
}
程序對四種數據類型排序。SORT(int)(ip);經編譯預處理轉換為sort_int(ip);這個宏對類型不敏感。如果在運行時才能確定調用哪個函數,可用此法。