指向(非成员)C++ 函数的指针在 C++ 和 C 之间是否兼容?
给定例如 C 代码
void doit(void (*cb)(int i))
{
cb(100);
}
是否可以使用 C++ 函数指针从 C++ 代码调用 do_it 函数(具有 C 链接),例如:
namespace {
void my_function(int i) {
//...
}
void other_function() {
doit(my_function);
}
};
其中 my_function 是非成员函数还是静态成员函数?我想这一定意味着调用约定对于 C 和 C++ 代码是相同的,这样才能正常工作 - 可以保证吗?
或者 C++ 代码是否需要与作为指针传递的函数的 C 链接doit
,例如
namespace {
extern "C" {
void my_function(int i) {
//...
}
}
void other_function() {
doit(my_function);
}
};