#define 使用##,起到拼接作用。可以用来系统初始化的时候统一注册函数。(ffmpeg 中的av_register_all)
学以致用:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CONFIG_INT_ADD 1
void add_int_ab(int a,int b)
{
printf ("\n === %d ===\n",a+b);
}
void (*p)(int a,int b);
#define REGISTER_ADD(X, x) \
{ \
if (CONFIG_##X##_ADD) \
p = add_##x##_ab; \
}
int main()
{
REGISTER_ADD(INT, int);
p(444,222);
return 0;
}