我想将一个公共(public) typedef
添加到一个模板,用于指向使用“C”语言链接的函数接受一个参数的指针。
我试过:
extern "C" {
template <typename return_t_, typename arg1_t_>
struct test
{
typedef return_t_ (*C_fun1_t)(arg1_t_);
};
}
和:
template <typename return_t_, typename arg1_t_>
struct test
{
extern "C" {
typedef return_t_ (*C_fun1_t)(arg1_t_);
}
};
和:
template <typename return_t_, typename arg1_t_>
struct test
{
extern "C" typedef return_t_ (*C_fun1_t)(arg1_t_);
};
没有成功。
我正在努力实现的目标是否可行?
最佳答案
C++03,§7.5p4:
A linkage-specification shall occur only in namespace scope. … A C language linkage is ignored for the names of class members and the member function type of class member functions.
不幸的是,您根本无法在当前的 C++ 中执行此操作。此文本在最新的 C++0x 草案中未更改,但“模板类型定义”可能能够完成它。
关于c++ - 是否可以在模板中定义指向外部 -"C"函数类型的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4866433/