如何将成员声明为指向外部"C"函数的指针?
How to declare a member as a pointer to an extern "C" function?
我希望声明外部" C"功能指针的类型。它是成员变量。我无法编译的这个问题中的语法。
template<typename Sig> struct extern_c_fp {
extern "C" typedef typename std::add_pointer<Sig>::type func_ptr_type;
};
我已经尝试将extern "C"
放在两端,在typedef
和typename
之间以及type
和func_ptr_type
之间,但编译器拒绝了所有内容。有任何建议吗?
extern "C" {
template<typename R, typename... Args>
using extern_c_fp = R(*)(Args...);
}
using my_function_ptr = extern_c_fp<void, int, double>;
// returns void, takes int and double
这不使用与您使用的界面相同的接口,但是可能有一种方法来提取Sig
的返回类型和参数类型。
这在Clang 3.1中起作用。Xeo指出,它在GCC中无效。我不确定这是否是任何一个编译器中的错误,所以在使用此编译时要小心。
您无法声明这样的类型(从7.5p4起):
仅在命名空间范围(3.3)中发生链接规范。
相关文章:
- QMetaObject invokeMethod的基于函数指针的语法
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- c++r值引用应用于函数指针
- 模板函数指针和lambda
- 是否可以将llvm::FunctionType转换为C/C++原始函数指针
- 带有类的函数指针
- () 函子后面的括号,而不是函数指针?
- 全局作用域中函数指针的赋值
- 使用"Task"函数指针队列定义作业管理器
- 将成员函数指针作为参数传递给模板方法
- 如何创建对象函数指针C++映射?
- 匹配函数指针作为模板参数?
- 通过函数指针定义类范围之外的方法
- 存储在类中的函数指针
- C++从函数指针数组调用函数
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 整数键映射到头文件中的成员函数指针
- 从类成员函数到类 C 函数指针的转换
- 如何将内联匿名函数分配给C++函数指针
- 将字符缓冲区强制转换为函数指针