MFC에서 PCL을 사용하려고 작업하는 중에,
다음과 같은 에러가 떴다.
...
Warning C4003: 'max' 매크로의 실제 매개 변수가 부족합니다.
error C2589: '(' : '::' 오른쪽에 잘못된 토큰이 있습니다.
error C2988: 템플릿 선언/정의를 인식할 수 없습니다.
error C2059: 구문 오류 : '::'
...
도대체 뭐가 문제일까.. 하면서 고민 하던 중,
공통점은 max 매크로의 실제 매개 변수가 부족하다 라는 공통된 경고를 깨닫게 되었고,
error C2589로 검색을 하던중, 한 블로그에 들어가서 문제점과 해결방법을 알게 되었다.
참조 블로그 링크 : http://blog.naver.com/smurfe380/150002451786
문제점은 바로..
std::min() 과 windef.h 파일에 있는 #define min(a,b) (((a) < (b)) ? (a) : (b)) 끼리 서로 충돌하는 에러 였던 것이었다.
그래서 해결 방법은,
문제가 되는 소스코드의 제일 첫 부분(include 하기 전), 아래의 소스코드를 추가해주면 문제는 깔끔히 해결 된다.
---------------------------------------------------------------------------------------------------
#ifdef max
#undef max
#undef min
#endif // max
---------------------------------------------------------------------------------------------------
이렇게 함으로써, max가 충돌되는것을 막음과 동시에, 적절한 min() 함수가 호출되서, 오류들을 말끔히 해결 할 수 있었다.
'[ Topics ] > Visual Studio' 카테고리의 다른 글
CString 에서 경로, 파일명, 확장자를 구분하여 출력하는법 (0) | 2014.05.01 |
---|---|
MFC Edit control 에서 실수형 값 가져오는방법 (0) | 2013.11.26 |
MFC Dialog창을 modaless할때 포커스 옮기는법 (0) | 2013.07.30 |
MFC 새다이얼로그를 생성시 OnDestroy() 경고 및 Memory Leaks (0) | 2012.09.04 |
MFC 다이얼로그 기반 OnIdle()과 KickIdle() 그리고 modaless (0) | 2012.09.03 |