在main.cpp中,我创建了多个自定义类的对象,例如:
#include "device_manager.hpp"
DeviceManager deviceManager; //compiles and works just fine
但是,当我尝试在同一main.cpp下面实现一个简单的模板时:
template <typename T>
inline T max(T a, T b) {
return a > b ? a : b;
}
我得到:
template with C linkage main.cpp line 35 C/C++ Problem
似乎编译器无法理解template关键字。我没有在main.cpp中添加任何extern“ C”块。我尝试使用gnu ++ 14编译器(C ++ 14 + gnu扩展)和gnu ++ 11来编译C ++代码,使用gnu11来编译C-to-C ++转换项目中的C代码。理解template关键字可能会出错吗?
“ C链接”部分使我怀疑您可能无法关闭]]
extern "C" { //... }
您的头文件中的声明。
这正是这样的代码将产生的错误:
extern "C" {
template <typename T>
inline T max(T a, T b) {
return a > b ? a : b;
}
}