1、宏定义覆盖
函数名在C语言中是一个指针即地址,而宏定义#define可将任何文本进行替换,包括函数名,例如
#define func func_rename
void func(void)
{
... //函数体
}
那么在预编译阶段,所有包含func字符的地方都将被func_rename替换,直到此宏定义无效,这种方法仅适用于将函数名替换,未替换前的函数名则无法调用。
2、alias属性重命名
通过C语言中的属性描述__attribute__在函数或数据声明中设置其alias属性
void func_rename(void) __attribute__ ((alias("func")));
void func(void)
{
... //函数体
}
这样就可以同时使用func或func_rename函数名调用func函数