본문 바로가기
개발/C#

전처리기

by 남생이야 2024. 5. 8.

 

코드 제외. 포함 #if, #elif, #else , #endif

C# 컴파일러는 해당 기호가 정의되거나 정의가 참일 때만 #if, #endif 사이의 코드를 컴파일한다. 

#if ONPC
System.Console.Clear();
#endif

C/C++과 달리 숫자 값을 할당할 수 없다. 

#if (NET6_0_OR_GREATER || NETSTANDARD2_0_OR_GREATER)
    Console.WriteLine("Using .NET 6+ or .NET Standard 2+ code.");
#elif
    Console.WriteLine("Using older code that doesn't support the above .NET versions.");
#endif

 

 

전처리 기호 정의 #define, #undef

#define HICSHAP

#define으로 기호를  사전에 정의한다. #if 지시문으로 값을 전달받아 사용할 수 있다. 

#define VERBOSE

#if VERBOSE
   Console.WriteLine("Verbose output version");
#endif

#define 지시문은 파일에서 지시문이 명령을 사용하기 전에 선언되어야 한다. #undef는 #define에서 정의한 기호를 해제할 수 있다. 

 

 

영영 정의 #regine #endregin

#region : 영역 정의 시작 

#endregion : 영역 정의 종료 

 

#region 을 사용하면 코드 편집기에서 코드 블록을 확장 및 축소할 수 있는 코드 블록을 지정할 수 있다. 

#region 사용 예 

더보기

 

 #region BT Seting 

 BTNode SettingBT() => new SelectorNode
         (
             new List<BTNode>
             {
                 new ActionNode(CheckDead),
                 new SequenceNode // 탐지 및 추적 
                 (
                     new List<BTNode>
                     {
                         new ActionNode(CheckDetectEnemy),
                         new ActionNode (ChaseToTarget),
                     }

                 ),
                 new SelectorNode // 대기 및 순찰
                 (
                     new List<BTNode>
                     {
                         new ActionNode(DoWaiting),
                         new ActionNode(DoPatrol),
                     }
                 ),

              
             }
         );

 #endregion

 

 

오류 및 경고 정보 #error, #warning, #line

코드에 잠재적인 문제를 표시하고 싶을 때 사용한다. 

#error : 지정된 메시지를 사용하여 컴파일러 오류 생성

#warnig : 지정된 메세지를 사용하여 컴파일러 경고 생성

#line : 컴파일러 메시지를 사용하여 출력된 줄 번호 변경 

#error Deprecated code in this method.

 

 

#line 지시문은 C# 컴파일러에서 에러나 경고를 보고하는 줄 번호를 제어한다. 

 

경고 끄기 #pragam 

 

특정한 경고를 무시하고 싶을 때 사용한다. 

#pragma pragma-name pragma-arguments

 

'개발 > C#' 카테고리의 다른 글

[C#]상속  (0) 2024.05.11
부분 클래스  (0) 2024.05.08
확장 메소드  (0) 2024.05.08
Particle  (0) 2024.04.28
[C#] 지연된 실행  (0) 2024.04.17