C 将外部函数链接为成员函数

C++ link an extern function as member function

本文关键字:函数 成员 链接 外部      更新时间:2023-10-16

基本上,我已经编译了一个已编写的文件;.obj file。它具有导出功能f。在C 中,我写了一堂课,想将导出的函数f用作成员函数。

如果将其用作全局函数,我知道只写extern "C" f()。但是,这与会员功能无效,至少我不知道该怎么做。

那么,我该怎么做?

注意:函数f编写正确。即它考虑了this指针等。它应该在组装级别上正常工作。

如果该函数写为免费函数,则必须按照您的习惯方式将其声明为免费功能。就像您无法使用void foo()构建库,然后以某种方式将其声明为void bar()并期望它可以正常工作一样,您也无法获取免费功能并将其转换为成员函数。但是,您可以做的是在您的班级中添加一个内联货币:

struct S;
extern "C" void f( S * );
struct S {
    void f() {
        using ::f;
        f(this);
    }
};

据我所知,这是您能做的最好的。