我有一个关于(重新)定义函数的问题.我的目标是有一个脚本,我可以选择定义一个函数.像这样:
void func(){}
int main(){
if (func)func();
}
Run Code Online (Sandbox Code Playgroud)
没有这个功能,只需:
int main(){
if (func)func();
}
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?
bdo*_*lan 16
您可以使用其弱函数属性扩展在GCC中执行此操作:
void func() __attribute__((weak)); // weak declaration must always be present
int main() {
if (func) func();
// ...
}
// optional definition:
void func() { ... }
Run Code Online (Sandbox Code Playgroud)
即使func()
在另一个.c文件或库中定义,这也可以工作.
我认为,这样的事情.没有多少使用函数指针,所以我的语法可能略有错误.
void func()
{
#define FUNC_PRESENT
// code
}
void (*funcptr)();
#ifdef FUNC_PRESENT
funcptr = func;
#else
funcptr = NULL;
#endif
int main()
{
if (funcptr)
funcptr();
}
Run Code Online (Sandbox Code Playgroud)