#if 컴파일러 지시문에서 본 모든 예제에서 “DEBUG”를 사용합니다. 디버그 모드에서 컴파일 할 때 실행하고 싶지 않은 코드를 제외하기 위해 같은 방법으로 “RELEASE”를 사용할 수 있습니까? 이 블록으로 둘러싸고 싶은 코드는 많은 양의 이메일을 전송하며 테스트 할 때 실수로 해당 코드를 전송하고 싶지 않습니다.
답변
아니, 당신이 몇 가지 일을하지 않으면 그렇지 않습니다.
여기서 중요한 부분은 DEBUG가 실제로 무엇이며 컴파일러가 확인할 수있는 일종의 상수입니다.
프로젝트 속성을 확인하면 빌드 탭 아래에 세 가지가 있습니다.
- “조건부 컴파일 기호”라는 텍스트 상자
- “DEBUG 상수 정의”라고 표시된 확인란
- “TRACE 상수 정의”라고 표시된 확인란
이름이 RELEASE 인 그러한 확인란이나 상수 / 기호가 미리 정의되어 있지 않습니다.
그러나 조건부 컴파일 기호라는 텍스트 상자에 해당 이름을 쉽게 추가 할 수 있지만 구성별로 설정되므로 프로젝트 구성을 릴리스 모드로 설정해야합니다.
따라서 기본적으로 텍스트 상자에 추가하지 않으면 #if RELEASE
구성에서 코드가 생성되지 않습니다.
답변
RELEASE
정의되어 있지 않지만 사용할 수 있습니다
#if (!DEBUG)
...
#endif
답변
아니.
디버그 구성에서는 DEBUG
정의 된 상수 (Visual Studio에서 자동으로 정의 됨)가 있지만 릴리스 모드에 대해 정의 된 상수는 없습니다. 빌드중인 프로젝트 설정을 확인하십시오.
프로젝트-> 빌드 에서 [DEBUG 상수 정의]를 선택 하는 것은 모든 파일의 시작 부분에 #define DEBUG를 포함시키는 것과 같습니다.
릴리스 구성에 대한 RELEASE 상수를 정의하려면 다음으로 이동하십시오.
- 프로젝트 속성-> 빌드
- 릴리스 모드를 선택하십시오
- 에서 조건부 컴파일 기호 입력 텍스트 상자 : RELEASE
답변
VS 설치 (VS 2008)에서 #if RELEASE
작동하지 않습니다. 그러나 당신은 단지 사용할 수 있습니다#if !DEBUG
예:
#if !DEBUG
SendTediousEmail()
#endif
답변
전에는 본 적이 없지만 …
#if (DEBUG == FALSE)
과
#if (!DEBUG)
나중에 작동합니까?
답변
#if(!DEBUG)
이 목적으로 사용할 수 있습니다 .
답변
“팝 카탈린”이 맞았습니다. 빌드 유형을 기반으로 정의를 제어하면 많은 유연성이 제공됩니다. 예를 들어, 동일한 솔루션에서 “DEBUG”, “DEMO”및 “RELEASE”구성을 모두 가질 수 있습니다. 따라서 두 가지 솔루션으로 중복 프로그래밍 할 필요가 없습니다.
따라서 RELEASE 조건부 컴파일 기호를 정의 할 때 와 동일 #if RELEASE
하거나 #if (RELEASE)
작동합니다 #if DEBUG
.
다음은 “Pop Catalin”게시물에서 발췌 한 것입니다. 릴리스 구성에 대한 RELEASE 상수를 정의하려면 다음으로 이동하십시오. * 프로젝트 특성-> 빌드
* 릴리스 모드 선택 * 조건부 컴파일 기호 텍스트 상자에 RELEASE를 입력하십시오.