#if RELEASE가 ## DEBUG가 C #에서하는 것처럼 작동합니까?
#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를 입력하십시오.
나는 이것이 오래된 질문이라는 것을 알고 있지만 DEBUG 및 RELEASE 외부에서 TEST 또는 UAT와 같은 자체 구성을 만들 수 있다고 언급 할 가치가 있습니다.
그런 다음 프로젝트 속성 페이지의 빌드 탭에서 "조건부 컴파일 기호"를 TEST (예 : TEST)로 설정하면 다음과 같은 구문을 사용할 수 있습니다.
#if (DEBUG || TEST )
//Code that will not be executed in RELEASE or UAT
#endif
필요한 경우 다른 클라이언트 또는 전체 웹 메소드와 같은 특정 이유로이 구성을 사용할 수 있습니다. 과거에도 일부 명령이 특정 하드웨어에서 문제를 일으킨 적이 있기 때문에이를 사용하여 하드웨어 X에 배포 할 때 앱을 구성했습니다.
조건부 컴파일 타임 기호 (원하는 이름)를 직접 만들 수 있습니다. 프로젝트 속성 상자의 메뉴 옵션에있는 "프로젝트 빌드 대화 상자"로 이동하십시오 : 프로젝트-> [프로젝트 이름] 속성 ...
"C # 코드 파일 맨 위에"정의 할 수도 있습니다. 처럼:
#define RELEASE
// or
#undef RELEASE
#if 문에서 기호를 사용할 수 있습니다.
#if RELEASE
// code ...
#elif …
// code ...
#endif
// or
#if !RELEASE
// code ...
#endif
왜 안돼?
#if RELEASE
#undef DEBUG
#endif
참고 URL : https://stackoverflow.com/questions/507704/will-if-release-work-like-if-debug-does-in-c
'IT' 카테고리의 다른 글
django에서 사용자 IP 주소를 어떻게 얻습니까? (0) | 2020.03.29 |
---|---|
구문 오류 : 함수가 '£'를 반환 할 때 파일에 ASCII가 아닌 문자 '\ xa3' (0) | 2020.03.29 |
이클립스 댓글 / 댓글 바로 가기? (0) | 2020.03.29 |
Java에서 "논리적 배타적"연산자 만들기 (0) | 2020.03.29 |
C #에서 문자열과 문자열의 차이점은 무엇입니까? (0) | 2020.03.29 |