我知道模板没有在 C 中定义。但是在我的例子中,我有一个用 C++ 编写的 API,它被一个用 C 编写的应用程序使用。我希望在 API 中添加一个模板函数。该函数在abc.cpp中定义如下:
template<typename T> T function_name(T param1){
...
...
return val;
}
abc.hpp中声明如下:
template<typename T> T function_name(T);
这个函数从 xyz.c 调用为:
int a ,b = 5;
a = function_name(b);
但是,它在 abc.cpp 和 abc.hpp 中都显示以下错误:
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token
template<typename T>
即使使用 extern "C"也无济于事(导致错误:带有 C 链接的模板)。我的疑问是,是否有可能以这种方式调用此模板函数?如果是,如何实现?谢谢。
最佳答案
不,当然不是,C 中不存在模板函数,您无法使用 C 编译器解析模板声明。
您将不得不在 C++ 端为模板的 int
实例添加一个 C 包装器,并调用它(例如 function_int()
).
关于c++ - 从 C 文件调用模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40678385/