1、报错内容
In file included from /usr/include/c++/4.8.2/bits/stl_algo.h:60:0,
from /usr/include/c++/4.8.2/algorithm:62,
from ******:7:
/usr/include/c++/4.8.2/bits/algorithmfwd.h:371:41: error: macro "min" passed 3 arguments, but takes just 2
min(const _Tp&, const _Tp&, _Compare);
^
****
/usr/include/c++/4.8.2/bits/algorithmfwd.h:367:5: error: expected unqualified-id before 鈥榗onst鈥?
min(const _Tp&, const _Tp&);
^
/usr/include/c++/4.8.2/bits/algorithmfwd.h:367:5: error: expected 鈥?鈥?before 鈥榗onst鈥?
/usr/include/c++/4.8.2/bits/algorithmfwd.h:367:5: error: expected 鈥?鈥?before 鈥榗onst鈥?
/usr/include/c++/4.8.2/bits/algorithmfwd.h:367:5: error: expected 鈥?鈥?before 鈥榗onst鈥?
/usr/include/c++/4.8.2/bits/algorithmfwd.h:367:5: error: expected initializer before 鈥榗onst鈥?
In file included from /usr/include/c++/4.8.2/bits/stl_algo.h:60:0,
from /usr/include/c++/4.8.2/algorithm:62,
from ***:7:
/usr/include/c++/4.8.2/bits/algorithmfwd.h:371:5: error: template declaration of 鈥榗onst _Tp& std::min鈥?
min(const _Tp&, const _Tp&, _Compare);
^
In file included from ******
/usr/include/c++/4.8.2/bits/stl_algo.h: In function 鈥榲oid std::__merge_sort_loop(_RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, _Distance)鈥?
*******:255:29: error: expected unqualified-id before 鈥?鈥?token
#define min(a,b) (((a) < (b)) ? (a) : (b))
^
/usr/include/c++/4.8.2/bits/stl_algo.h: In function 鈥榲oid std::__merge_sort_loop(_RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, _Distance, _Compare)鈥?
*************:255:29: error: expected unqualified-id before 鈥?鈥?token
#define min(a,b) (((a) < (b)) ? (a) : (b))
^
make: *** [***.o] Error 1
Error!
2、解决办法
这个错误与代码本身或g++版本无关,只是因为出现了宏定义冲突:
其实只需把属于自己定义的相关头文件(比如****.h)中加入(一定要加在自己的头文件引用和标准头文件的引用之间):
#include "A.h"
#undef max
#undef min
#include <algorithm>
这个问题就解决了