我的问题有点简单;
是否可以在C ++静态类函数上进行C链接(extern "C"
)? - 不使用包装。
答案 0 :(得分:5)
不,你不能只是简单地写一个包装函数。
class X
{
public:
static void f();
};
extern "C" void call_X_f()
{
X::f();
}
答案 1 :(得分:2)
正如我在评论中所说,你不能。但是你可以达到同样的净效果。
这就是我所说的:
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 here
上编译正常答案 2 :(得分:1)
extern "C"
无法应用于静态成员函数。但由于目标是从汇编程序调用函数,只需在汇编程序代码中使用受损的名称。这里没什么魔力;你需要的只是名字。