我知道模板不是用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 ++开发应用程序。这样,新代码可以使用C ++库的所有出色功能,例如模板;-),重载函数等,并且可以访问C ++的标准库,从而可以大大提高工作效率。
在应用程序中,对于新的源文件,我看不出使用C ++的主要障碍。另一个问题是,是否容易并值得在编辑时将现有的C文件切换到C ++。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句