“##”把两个独立的字符串连接成一个字符串:
#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);这个宏对类型不敏感。如果在运行时才能确定调用哪个函数,可用此法。