[그냥 따라하는 C#] C# 전처리, C# #define, C# #undef

728x90
반응형

C#에서 전처리는 C와 동일하다. 아래코드를 보자.

 

#define TEST_1
#undef TEST_2

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp_Processor
{
    class Program
    {
        static void Main(string[] args)
        {
#if TEST_1
            Console.WriteLine("TEST_1 define");
#else
            Console.WriteLine("TEST_1 Not define");
#endif

#if TEST_2
            Console.WriteLine("TEST_2 define");
#elif TEST_3
            Console.WriteLine("TEST_3 define");
#else
            Console.WriteLine("Not define ");
#endif
        }
    }
}

 

C에서 사용하는 전처리와 동일하게 해석하면된다. 첫번쨰 #if에서 TEST_1이 정의되어 있는지 확인한다. 맨 윗줄에 보면 #define TEST_1으로 선언되어 있다. "TEST_1이 정의되어 있다."로 해석할 수 있다. 따라서 #if TEST_1아래 코드를 실행한다. 

 

다음으로 #if TEST_2를 보자. 코드 상단에 #undef TEST_2로 선언되어 있다. "TEST_2가 정의되어 있지 않다."로 해석할 수 있다. TEST_2가 정의되어 있지 않기 때문에 아래줄의 #elif TEST_3을 확인할 것이다. TEST_3은 선언되어 있지 않기 떄문에 아래 #else 의 아래줄을 실행할 것이다. 

 

#define / #undef 를 정의할때 주의사항은 반드시 소스코드 최상단에 위치해야된다는 점과 DEBUG를 정의하면 안된다는것이다. DEBUG로 정의해보니 안된다. 

 

- 끝 -

 

728x90
반응형