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\n", 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;
}
代码如上。利用两个宏,重复加载头文件,来达到定义不同函数的目的。