c++ - 包含头文件 unordered_map 时出错

标签 c++ stl macros

当我在代码中包含 unordered_map 头文件时,会出现以下错误

"/usr/lib/gcc/armv7l-tizen-linux-gnueabi/6.2.1/include/c++/bits/hashtable.h:
In constructor 'std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
_H1, _H2, _Hash, _RehashPolicy, _Traits>::_Hashtable(_InputIterator, 
_InputIterator, std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 
_H1, _H2, _Hash, _RehashPolicy, _Traits>::size_type, const _H1&, const _H2&,
const _Hash&, const _Equal&, const _ExtractKey&, const allocator_type&)':

 error: expected unqualified-id before '(' token
 [   29s]  #define max(a, b)    (((a) > (b)) ? (a) : (b))"

我确信没有语法错误。我认为宏和 std::unordered_map 之间存在冲突,但我不知道如何解决此问题。在这里,我将 unordered_map 包含在一个文件中,该文件被另一个文件包含,类似地,定义宏 max 的头文件也包含在同一文件中。

最佳答案

是的,您的宏 max()std::max() 函数之间存在冲突。
解决方案应该很简单:删除 max() 宏并使用 std::max() 代替。

关于c++ - 包含头文件 unordered_map 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47881346/

相关文章:

c++ - 是否可以在 C++ 类中使用信号?

c++ - GCC 在/usr/local/include 中找不到头文件

c++ - 用纹理坐标重复纹理的部分

c++ - 静态数组的动态数组的问题

c++ - 如果不存在键,则使用[]运算符访问STL Map元素会添加新元素

c++ - 如何将 std::wstring 转换为数字类型(int、long、float)?

macros - 为什么符号 pat ... 表示方案宏模式中的零个或多个表达式

c++ - 为什么 [std::unique] 不能应用于 [std::multiset]?

macros - 嵌套在宏内的 let 中的 if 子句未按预期工作

c++ - 在某个随机命名空间中专门化和定义模板静态成员是否可以?