gpt4 book ai didi

c++ - 如何将成员声明为指向 extern "C"函数的指针?

转载 作者:可可西里 更新时间:2023-11-01 18:39:42 26 4
gpt4 key购买 nike

我正在寻找声明 extern "C"函数指针的类型。它是一个成员变量。 this question 中的语法我无法编译。

template<typename Sig> struct extern_c_fp {
extern "C" typedef typename std::add_pointer<Sig>::type func_ptr_type;
};

我已经尝试将 extern "C" 放在两端,在 typedeftypename 之间以及在 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

这与您使用的接口(interface)不同,但可能有一种方法可以提取 Sig 的返回类型和参数类型。

这适用于 clang 3.1。 Xeo指出it didn’t work in GCC .我不确定这是否是任一编译器中的错误,因此在使用时要小心。

关于c++ - 如何将成员声明为指向 extern "C"函数的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13213874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com