본문 바로가기

Programming Language/C#

[C#] 전처리기

  • 전처리기 지시어는 실제 컴파일이 시작되기 전에 컴파일러에게 특별한 명령을 미리 처리하도록 지시하는 것이다.
  • 전처리기 지시어는 해당 파일 안에서만 효력을 발생한다.
  • 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