본문 바로가기

프로그래밍/C++

매크로(define) 재정의 충돌문제 해결

Windows 8.0 SDK and DirectX SDK 가 충돌하여


몇몇 매크로가 충돌하는 경우가 생겼다.


보통 DX_SDK가 오래된 버전일때 이러한 경우가 생기는데,


여기에서 해결방법은 여러가지 방법이 있는데 다음과 같다.




1. DX_SDK를 include에서 제거


2. DX_SDK의 몇몇 old 함수를 사용하고 있다면,  프로젝트 세팅을 다음과 같이 변경

project settings -> "General" -> "Platform Toolset"to "Visual Studio 2012 - Windows XP (v110_xp)" 


3. 중복정의가 특별히 문제가 없다면 c4005 를 경고 무시에 추가



#include <iostream>

using namespace std;


#define TEST "test1"

#define TEST "test2"   // C4005 delete or rename to resolve the warning


int main() {

   cout << TEST << endl;

}


c4005 를 추가했을 경우, 컴파일러는 2번째 정의한 매크로를 사용한다.


https://msdn.microsoft.com/ko-kr/library/8d10sc3w.aspx



'프로그래밍 > C++' 카테고리의 다른 글

C++11 람다식 정리(lamda)  (0) 2016.02.01
Visual C++ 데이터 형식(범위)  (0) 2016.01.29
C++11 enum class  (0) 2016.01.21
객체지향 - 인터페이스와 구현의 분리  (0) 2015.11.30
FreeImage 라이브러리  (0) 2015.10.11