我想为用
Haskell(GHC)编写的代码提供回调函数.它使用类似GCC C编译器的函数类型来导出/导入功能,并在运行时与我的代码进行互操作.
我必须提供一个回调函数,它实际上接受这个指向类的指针并只调用它的方法:
struct C { int f(int i) { ; } static int f_callback(void * self,int i) { static_cast< C * >(self)->f(i); } };
逻辑上f_callback是C类的一部分,因此我将其放入相应的命名空间范围.
但我担心我应该使用extern“C”语言规范(调用约定在这里是重要的,而不是名称错误)?可以在普通命名空间中声明和定义extern“C”函数,对于在不同命名空间中使用相同名称定义的extern“C”函数有一些特殊规则,但是there is类范围的命名空间和简单命名空间之间没有区别一.
是否可以将静态extern“C”函数定义到类范围中?