小编Hen*_*nry的帖子

是否可以显式调用名称损坏的函数?

假设我有一些类似的东西

struct Foo {
    void goo() {printf("Test");}
}

external void _ZN3Foo3gooEv(Foo *f);

int main() {
        Foo f;
        _ZN3Foo3gooEv(&f);
}
Run Code Online (Sandbox Code Playgroud)

是否可以在这里通过函数的名称修改版本调用 Foo::goo() ?

编辑:

作为澄清,这只是一个实验,看看是否可以显式调用名称损坏的函数。这里没有进一步的目标。

我认为所有成员函数基本上都将 this 指针作为它们的第一个参数。

我知道这不会链接,但我不明白为什么。我认为名称修改发生在编译时,当链接器运行时,它会解析对名称修改函数的调用。(这就是为什么我想如果我们将 _ZN3Foo3gooEv 保留为 extern,它会去符号表中查找)。

我在这里误解了什么吗?

c++ name-mangling function-call

37
推荐指数
1
解决办法
2049
查看次数

标签 统计

c++ ×1

function-call ×1

name-mangling ×1