The <algorithm> header doesn't seem to contain std::min() and std::max() any longer

반응형

std::min, std::max를 쓰는데 이상한 오류가 났다.
이에대해 찾은 해결책.

The <algorithm> header doesn't seem to contain std::min() and std::max() any longer. I looked in the VC\include folder and found only minmax.h with old macros-based min() and max() implementation. VS2005B2 MSDN clains min() and max() are still available in the <algorithm> header.

algorithim 헤더가 std::min이랑 std::max를 가지고 있지 않은것 같애 ㅜㅜ.
그래서 내가 vc의 include 폴더의 minmax를 찾아서 살펴보니까 minmax.h파일이 있더군.
min()이랑 max라는 오래된 매크로 구현물을 찾았지.
vs2005B2 MSDN이 말하길 min()이랑 max()는 여전히 alhorithm 헤더에 포함되어 있다는데 말야..
난 왜 안될까?

대충 이런 내용인듯하다.

It does repro if you include the windows.h header (or indirectly, if you include an ATL header which includes windows.h).
To fix the problem, you'll need to /DNOMINMAX on the command line, so that windows.h (windef.h) does not #define min and max.
그건 네가 windows.h헤더를 include할때 생긴걸 거야.
이 문제를 고치고 싶으면 /DNOMINMAX 커맨드 라인에 추가시켜줘서 windows.h가 min이랑 max를 define하지 못하도록 해.

그러니까 매크로 추가해서 min이랑 max define을 막아라는 말인듯 하군.

여기에 대해 또다른 곳 링크를 건다.
http://lists.boost.org/boost-users/2005/01/9571.php

The Boost config header win32.hpp used to disable these but no longer
does. You can disable the macros yourself by defining NOMINMAX before
including Windows headers.
이걸 보고 해결했다.

요걸 추가해주는 센스
#define NOMINMAX

'Study > C++' 카테고리의 다른 글

safe memcpy  (0) 2010.11.02
pointer to member function의 크기?  (0) 2010.10.24
boost 설치 하기  (0) 2010.08.10
boost.org 에 있는 boost library 목록 정리  (0) 2010.08.10
File Memory Mapping - 대용량 파일 입출력 처리 [펌]  (0) 2010.08.07
TAGS.

Comments