Weak函数宏定义声明 编译器为GCC
//WEAK_FUN(int, func_name, int a, int b, int c);
#define WEAK_FUN(type,name,args...) \
type __##name(args){return 0;}\
type name(args)__attribute__((weak, alias("__"#name)))
示例代码
//WEAK_FUN(int, func_name, int a, int b, int c);
#define WEAK_FUN(type,name,args...) type __##name(args){return 0;} type name(args)__attribute__((weak, alias("__"#name)))
WEAK_FUN(void, f1, void);
WEAK_FUN(int, f2, int a);
WEAK_FUN(int, f3, int a, char b);
WEAK_FUN(int, f4, int a, char b, short c);
int main(int argc, char **argv)
{
f1();
f2();
f3();
f4();
return 0;
}
使用 gcc x.c -E -o x.i展开宏
void __f1(void){return 0;} void f1(void)__attribute__((weak, alias("__""f1")));
int __f2(int a){return 0;} int f2(int a)__attribute__((weak, alias("__""f2")));
int __f3(int a, char b){return 0;} int f3(int a, char b)__attribute__((weak, alias("__""f3")));
int __f4(int a, char b, short c){return 0;} int f4(int a, char b, short c)__attribute__((weak, alias("__""f4")));
int main(int argc, char **argv)
{
f1();
f2();
f3();
f4();
return 0;
}