a.h
#define xglue(x, y) x ## y #define glue(x, y) xglue(x, y) static int glue(load_elf, SZ)(void) { printf("size is %d ", SZ); return 0; }
a.c
#include <stdio.h> #define SZ 8 #include "a.h" #undef SZ #define SZ 16 #include "a.h" #undef SZ int main(void) { load_elf8(); load_elf16(); return 0; }
代码如上。利用两个宏,重复加载头文件,来达到定义不同函数的目的。