- 전처리기 지시어는 실제 컴파일이 시작되기 전에 컴파일러에게 특별한 명령을 미리 처리하도록 지시하는 것이다.
- 전처리기 지시어는 해당 파일 안에서만 효력을 발생한다.
- C#의 전처리기 지시문은
#
기호로 시작하며, 주로#define
,#if
,#else
,#endif
등의 지시문이 있다.
[ 전처리기 지시문 예제]
1. #define
및 #undef
:
#define
은 상수 심볼을 정의할 때 사용됩니다. 정의된 심볼은#if
지시문에서 사용될 수 있다.#undef
는 정의된 상수 심볼을 해제할 때 사용된다.
#define DEBUG
// ...
#undef DEBUG
2. #if
, #else
, #elif
, #endif
:
- 조건부 컴파일을 지원하는 지시문이다. 주로
DEBUG
등의 조건부 컴파일 시 사용된다.
#if DEBUG
// 디버그 모드에서만 컴파일될 코드
#else
// 디버그 모드가 아닌 경우 컴파일될 코드
#endif
3. #warning
및 #error
:
#warning
은 컴파일러에 경고 메시지를 생성하도록 지시한다.#error
는 컴파일러에 오류 메시지를 생성하도록 지시한다.
#warning This is a warning message
#error This is an error message
4. #region
및 #endregion
:
- 코드를 논리적인 블록으로 그룹화하고 축소시키는 데 사용된다. 주로 코드의 가독성을 높이기 위해 사용된다.
#region MyRegion
// 코드 블록
#endregion
5. #pragma
:
- 컴파일러에 대한 특수한 지시사항을 제공합니다. 예를 들어 경고 메시지를 무시하도록 지시할 수 있다.
#pragma warning disable
// 경고 무시되는 코드
#pragma warning restore
[ 예제코드 ]
TEST_ENV 라는 심벌이 정의되었는지를 보고 서로 다른 코드블럭을 컴파일 하는 예시 코드
#define TEST_ENV
//#define PROD_ENV
using System;
namespace App1
{
class Program
{
static void Main(string[] args)
{
bool verbose = false;
// ...
#if (TEST_ENV)
Console.WriteLine("Test Environment: Verbose option is set.");
verbose = true;
#else
Console.WriteLine("Production");
#endif
if (verbose)
{
//....
}
}
}
}
'Programming Language > C#' 카테고리의 다른 글
[ C# ] Model 구현, GraphQL Api 연동 예제 (0) | 2024.02.20 |
---|---|
[C#] Event (0) | 2023.12.27 |
[C#] Delegate(대리자) (0) | 2023.12.27 |
[C#] 메서드 파라미터 ( ref, out ) (0) | 2023.12.27 |
[C#] Nullable 타입 ( ?, ?? ) (1) | 2023.12.27 |