使两个函数在 C++ 中具有相同的内存地址
Make two functions have the same memory address in C++
我正在构建一些共享库来测试不同的算法。
所有共享库的 header 应如下所示:
extern "C" {
void f1(params);
void f2(params);
}
其中两个函数具有完全相同的参数。
在其中一个实现中,我意识到我需要 f1 == f2
,但我希望它们共享相同的内存 space。
有办法吗?我知道函数指针通常可以解决问题,但这次我需要遵循共享库标准。
它是特定于平台的。对于 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
我正在构建一些共享库来测试不同的算法。 所有共享库的 header 应如下所示:
extern "C" {
void f1(params);
void f2(params);
}
其中两个函数具有完全相同的参数。
在其中一个实现中,我意识到我需要 f1 == f2
,但我希望它们共享相同的内存 space。
有办法吗?我知道函数指针通常可以解决问题,但这次我需要遵循共享库标准。
它是特定于平台的。对于 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