有關max(A,B)與min(A,B)函數在VS2013里的使用
這兩個函數在頭文件<algorithm>里,會返回A與B里比較小/大的一個。
不可以改為_MIN與_MAX。查閱得知在Windows工程里可以這樣替換
網址:https://zhidao.baidu.com/question/135498020.html
關于在linux與VC6里的使用,復制一篇CSDN里的帖子答案
首先,max()在標準C++中的確是個函數而非宏.它在不同編譯系統中的實際定義如下:===========================================================linux 下的 g++,頭文件<algorithm>template <class _Tp>inline const _Tp& max(const _Tp& __a, const _Tp& __b) { return __a < __b ? __b : __a;}===========================================================windows 下的 VC6,頭文件<algorithm> (最新的VS.net沒試過,不敢妄言)template<class _Ty> inlineconst _Ty& _cpp_max(const _Ty& _X, const _Ty& _Y){return (_X < _Y ? _Y : _X); }===========================================================看到了嗎? g++按照標準C++的規定把它定義為max();而VC6自作主張把它變成了_cpp_max().事實上,我提問時所附的源代碼是符合標準C++規則的,在g++下順利編譯,而由于VC6把max()變成_cpp_max(),導致無法編譯.要在VC6用max(),只能退而求其次使用_cpp_max().或_MAX().因為在頭文件algorithm包含的另一個頭文件xutility里有一句 #define _MAX _cpp_max另外有一個相關的宏__max, 是定義在stdlib.h中的:#define __max(a,b) (((a) > (b)) ? (a) : (b)),不過__max不是標準C++,是以前的C留下來的.
新聞熱點
疑難解答