반응형
개인적으로 겪은 실수에 대한 로그입니다.
매크로 함수의 이름이 클래스 멤버함수와 같은 이름일 경우의 처리 케이스) numeric_limits<int>::max();와 같이 STL을 이용하여 int의 max형을 얻으려고 했는데 warning C4003...와 같은 에러를 얻었다. |
이런 현상이 일어난 이유는 max(..)라는 매크로 함수가 <windows.h>에 정의되어 있기 때문이었다. 즉, 매크로가 전처리단계에서 확장된 후에 컴파일이 되기 때문에 흔히 발생하는 문제이다. |
해결책은 2가지가 있다. 1. #define NOMINMAX을 <windows.h> 포함 전에 정의하는 방법이 있다. 2. (numeric_limits<int>::max)()와 같이 함수코드를 ()로 감싸는 방법이 있다. 결국, 2번 방법을 선택했는데 이렇게 편한 방법이 있는지도 모르고 그동안은 함수이름 바꾸려고 참 많이 노력했는데..켁~ 참고로 참조한 사이트는 아래와 같습니다. http://www.physicsforums.com/archive/index.php/t-194653.html |
반응형
'C++ 프로그래밍' 카테고리의 다른 글
C++ Technical Report 1 : Metaprogramming and Type Traits (0) | 2009.07.29 |
---|---|
C++ Technical Report 1 : Function pobjects (0) | 2009.07.28 |
C++ Technical Report 1 : Containers (0) | 2009.07.27 |
C++ Technical Report 1 : General Utilities (0) | 2009.07.24 |
C++ Technical Report 1 (TR1) : Overview (0) | 2009.07.23 |
Visual Studio 2010에 적용 예정인 C++0x (0) | 2009.07.21 |
C++ 헤더파일에 선언할 수 있는 4가지 타입의 전역변수 (0) | 2009.04.21 |
[STL] erase Story... beta (1) | 2009.04.21 |