Coding Memo
[C#] Visual Studio 조건부 컴파일 심볼 설정 본문
조건부 컴파일 심볼 정의는 파일의 첫줄에 해야한다.
#define WINDOWS
// ...
#if WINDOWS
//...
#else
//...
#endif
조건부 컴파일 심볼이 하나의 파일에만 사용되면 간단히 위의 예시처럼 하면 된다.
만약, 저 심볼을 하나의 파일에서가 아니라, 다수의 파일에 적용해야하는 경우가 있다.
예를 들어, 조건부 컴파일 디렉티브로 플랫폼 별 코드를 작성해 놓았는데, 이런 코드가 하나의 파일에서가 아니라 프로젝트의 다수의 파일에 각각 다 심볼이 정의가 되어있을 때가 그런 경우다. 이 경우에는 빌드를 A로 하고 싶으면 심볼이 들어가 있는 모든 파일에 '#define A'가 들어가 있는지 다 확인해야한다. 그 반대로 A가 아닌 빌드를 원한다면 '#define A'가 모두 주석 처리가 되어 있는지 확인해야 한다. 매우 불편하다.
따라서 Visual Studio에서는 프로젝트에서 조건부 컴파일 심볼을 설정할 수 있다.
조건부 컴파일 심볼 설정
1. 프로젝트 우클릭 -> 속성
2. 빌드 -> 조건부 컴파일 심볼
3. 자신이 원하는 심볼 (#define으로 설정하려던 심볼)을 입력 후 저장 (ctrl + s)
만약 여러개라면 ';' (semi-clone)을 써서 구분할 수 있다.
구성에 따라 (Debug, Release모드 등에 따라) 조건부 컴파일 기호는 각각 다르게 입력할 수 있다.
또한 여기서 심볼을 임력해 놓으면, 파일에 #define으로 미리 입력하지 않았는데도 코드 힌트에 바로 뜨게 된다.
UNITY와 MEMORY_BUFFER가 뜬 것을 알 수 있다.
#define UNITY를 하지 않았지만 프로젝트 설정의 조건부 컴파일 심볼 옵션에 UNITY를 추가해 주었기 때문에 코드가 활성화 되었다.
빌드의 조건부 컴파일 기호에 필요한 심볼을 작성해 놓으면 파일 마다 맨 앞에 심볼을 따로 define하지 않아도 적용이 된다. 물론 코드 작성할 때도 적용되고, 빌드 할때도 적용된다.
(실제로 파일 앞에 #define으로 정의하지 않아도 #if ~~ 아래 코드가 회색으로 비활성화 되어 있지 않고 정상적인 코드로 보인다.)
'etc' 카테고리의 다른 글
빌드 시 이벤트 추가 (Visual Studio) (0) | 2023.10.10 |
---|---|
최대 연속 부분 구간 합 문제 (여러가지 풀이) (0) | 2023.09.12 |
구글 프로토버퍼 (Google Protobuf) 패킷 설계 (0) | 2023.07.27 |
[C#] 에코 서버 만들기 (0) | 2023.07.03 |
[C++, C#, Java] 소켓 (Socket) (0) | 2023.07.02 |