【发布时间】:2017-12-19 06:43:41
【问题描述】:
当我在代码中包含 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 的头文件也包含在同一个文件中。
【问题讨论】:
-
A
max宏与标准库不兼容。那个宏是从哪里来的?例如。使用 Windows 编程在包含<windows.h>之前定义NOMINMAX(也定义STRICT、UNICODE和WIN32_LEAN_AND_MEAN)。