如何指示编译器为虚函数生成别名?

p12*_*p12 5 c++ linux virtual linker abi

有关背景,请参阅此问题.

基本上,我有一个类的以下定义

class  MyClass {
    virtual int foo4(double, int);
};
Run Code Online (Sandbox Code Playgroud)

有没有办法指示编译器生成两个可以解析的符号foo4?也就是说,如果可执行文件要求动态链接器解析_ZN7MyClass4foo4Edi(符号for MyClass::foo4(double, int))和其他一些符号(比方说_ZN7MyClass9reserved1Ev,符号MyClass::reserved1()),我希望动态链接器将两者解析为&MyClass::foo4(double, int).我在Linux上使用相当现代的GCC.

Ric*_*ton 1

在 C++ 中,它看起来像这样:

class  MyClass {
    int foo5(double, int) __attribute__((alias("_ZN7MyClass4foo4Edi")));
    virtual int foo4(double, int);
};

int MyClass::foo4(double d, int i)
{
}
Run Code Online (Sandbox Code Playgroud)