我的问题有点简单;
extern "C"
是否可以在 C++ 静态类函数上进行 C 链接( )?- 不使用包装器。
不,您只能简单地编写一个包装函数。
class X
{
public:
static void f();
};
extern "C" void call_X_f()
{
X::f();
}
正如我在评论中所说,你不能。但是你可以达到同样的净效果。
这就是我所说的:
class A;
extern "C" void foo(A*);
class A
{
int i;
friend void foo(A*);
};
extern "C" void foo (A* a)
{
a->i = 10;
}
int main()
{
A a;
foo(&a);
return 0;
}
在这里可以在 gcc 4.7.2 上编译
extern "C"
不能应用于静态成员函数。但由于目标是从汇编程序调用函数,只需在汇编程序代码中使用错位名称即可。这里没有什么魔法;你需要的只是名字。