使两个函数在C ++中具有相同的内存地址

时间:2017-03-19 12:23:45

标签: c++ shared-libraries

我正在构建一些共享库来测试不同的算法。 所有共享库的标题应如下所示:

extern "C" {
  void f1(params);
  void f2(params);
}

其中两个函数具有完全相同的参数。

在其中一个实现中,我意识到我需要f1 == f2,但我希望它们共享相同的内存空间。

有办法吗?我知道函数指针通常可以解决问题,但这次我需要遵循共享库标准。

1 个答案:

答案 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