包含头文件unordered_map时出错

时间:2017-12-19 06:43:41

标签: 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的头文件也包含在同一文件中。

2 个答案:

答案 0 :(得分:2)

是的,您的宏max()std::max()功能之间存在冲突 解决方案应该很简单:删除max()宏并改为使用std::max()

答案 1 :(得分:0)

弄清楚max()定义来自哪里,如果它在你自己的代码中你应该删除它,如果它在系统头中尝试移动包括直到

之后