'main.cpp中使用模板关键字时出现'带有C链接的模板'错误

问题描述 投票:0回答:1

在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++ templates g++ linkage
1个回答
0
投票

“ C链接”部分使我怀疑您可能无法关闭]]

extern "C" {
//...
}

您的头文件中的声明。

这正是这样的代码将产生的错误:

extern "C" {
template <typename T>
inline T max(T a, T b) {
  return a > b ? a : b;
}
}
© www.soinside.com 2019 - 2024. All rights reserved.