출처 : http://tommyhsm.tistory.com/100
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() 함수가 호출되서, 오류들을 말끔히 해결 할 수 있었다.
'Programming > MFC' 카테고리의 다른 글
충격 AfxGetMainWnd() 함수 (0) | 2016.11.21 |
---|---|
error C2661: 'pcl::PointCloud<PointT>::operator new' : no overloaded function takes 3 arguments (0) | 2016.11.17 |
error C3859: PCH에 대한 가상 메모리 범위를 초과했습니다.에러 (0) | 2016.11.16 |
MFC에서 Web Browser Control을 사용했을 때 IE버전이 다를 경우 Script Error가 발생할 때가 있는데 PC는 64bit일 때 (0) | 2016.10.31 |
MFC에서 콘솔(console) 출력하기 (0) | 2016.10.30 |