2017-03-17 6 views
1

Im은 C++에서 작은 프로젝트를 작성하고 im은 _DEBUG 조건에서만 실행될 코드에 부분을 포함한다고 가정합니다. 코드는 다음과 같습니다 :다른 컴파일러에서 _DEBUG 정의를 사용한 다음 Visual Studio

#ifdef _DEBUG 
//Debuging code area 
#endif 

Visual Studio는 기본적으로 IDE에서 "실행"또는 "디버그"를 클릭하여이를 지원합니다. 다른 환경에서 같은 기능을 사용하는 방법? Clion (Clang 컴파일러)에서 그렇게 할 수 있습니까? 방법? 비 디버그 (NDEBUG 정의되어있는 경우 assert() 비활성화 즉, reference here 참조) 구축을위한

+0

표준 디버그는 디버그하지 않기 위해 'NDEBUG'입니다. 이것이'assert'가 사용하는 것임을 알 수 있습니다. 어쨌든 컴파일러와 IDE를 사용하여 원하는대로 정의 할 수 있습니다. 그것에 대한 문서가 있어야합니다. – chris

답변

2

더 일반적인 #DEFINE는 NDEBUG이다.

Visual Studio 프로젝트에서 _DEBUG marco는 기본적으로 디버그 대상에 대해 # 정의되어 있지만 프로젝트 속성 대화 상자의 사전 처리기 정의 목록에서 제거 할 수 있습니다.

gcc -D _DEBUG .... 

(reference here)

:

다른 플랫폼에

, 그냥 몇 가지 방법으로 컴파일러에 #DEFINE을 통과 유닉스 계열의 시스템에서 GCC 컴파일러 즉, 그냥 -D 명령 줄 옵션을 사용하여

_DEBUG와 NDEBUG에 대한 추가 정보는 StackOverflow post입니다.

1

플랫폼 간 호환성을위한 소프트웨어를 개발할 때, 나는 #define of _DEBUG를 컴파일러/툴체인에 명시 적으로 전달하는 것을 선호합니다.

의 Microsoft Visual C++ 컴파일러는 이미 # 정의하지만, GCC를 위해 당신이의 -D의 명령 줄 옵션을 사용하여 전달할 수 있습니다 예 : 당신은 (내가하는 것처럼) 건물 도구로 CMake를 사용하는 경우

gcc -D _DEBUG ... 

, 다음과 같이 CMakeLists.txt 파일에 더 쉽게 추가 할 수 있습니다.

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")