cee*_*dee 0 c c++ templates template-function
我知道模板没有在C中定义.但在我的情况下,我有一个用C++编写的API,由C编写的应用程序使用.我希望在API中添加模板函数.该函数在abc.cpp中定义如下:
template<typename T> T function_name(T param1){
...
...
return val;
}
Run Code Online (Sandbox Code Playgroud)
abc.hpp中的声明如下:
template<typename T> T function_name(T);
Run Code Online (Sandbox Code Playgroud)
并且从xyz.c调用此函数:
int a ,b = 5;
a = function_name(b);
Run Code Online (Sandbox Code Playgroud)
但是,它在abc.cpp和abc.hpp中都显示以下错误:
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token
template<typename T>
Run Code Online (Sandbox Code Playgroud)
即使使用extern"C"也无济于事(导致错误:带C链接的模板).我怀疑的是,甚至可以用这种方式调用这个模板函数吗?如果是,那怎么能实现呢?谢谢.
不,当然不是,C中不存在模板函数,您无法使用C编译器解析模板声明.
您将不得不在C++端为int模板实例添加一个C包装器,并调用它(例如类似的东西function_int()).
| 归档时间: |
|
| 查看次数: |
1044 次 |
| 最近记录: |