我正在构建一些共享库来测试不同的算法。 所有共享库的标题应如下所示:
extern "C" {
void f1(params);
void f2(params);
}
其中两个函数具有完全相同的参数。
在其中一个实现中,我意识到我需要f1 == f2
,但我希望它们共享相同的内存空间。
有办法吗?我知道函数指针通常可以解决问题,但这次我需要遵循共享库标准。
答案 0 :(得分:3)
它是特定于平台的。对于GCC,您可以这样做:
extern "C" {
void f1(params);
void f2(params) __attribute__((weak, alias("f1")));
}
参考:https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes