[C#] 전처리기 지시문

[C#] 전처리기 지시문

하나의 소스코드파일로 여러가지 상황을 만족하는 프로그램을 만들때 사용.



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)
        {
            String txt = Console.ReadLine(); //엔터가 눌릴때까지 키보드입력을 받는 역할
            if( string.IsNullOrEmpty(txt) == false) // null이거나 empty 인경우 true 를 반환한다.
            {
                Console.WriteLine("사용자입력" + txt);
            }
#if OUTPUT_LOG
            else
            {
                Console.WriteLine("입력되지않음");
            }
#endif
        }
    }
}

전처리기 지시문 : 소스코드를 나누어 컴파일할때 중복 소스를 방지하고자 사용
#if 상수(전처리상수) / #endif 를 사용

[OUTPUT_LOG가 정의되지 않은 컴파일]
csc program.cs

[OUTPUT_LOG가 정의된 컴파일]
csc /define:OUTPUT_LOG program.cs

비쥬얼스투디오에서는 솔루션탐색기 - 프로젝트항목 선택 - 속성-빌드-조건부컴파일기호에 OUTPUT_LOG를 입력




#define __X86__
#undef OUTPUT_LOG

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 OUTPUT_LOG
            Console.WriteLine("OUTPUT_LOG 가 정의됨");
#else
            Console.WriteLine("OUTPUT_LOG 가 정의안됨");
#endif

#if __X86__
            Console.WriteLine("__X86__정의됌");
#elif __X64__
            Console.WriteLine("__X64__정의됌");
#else
            Console.WriteLine("아무것도 정의안됌");
#endif

        }
    }
}


결과


#define / #undef 문은 반드시 소스코드보다 먼저 나타나야한다.

댓글

이 블로그의 인기 게시물

[파이썬] #2-모듈설치 및 스파이더(spyder)사용

[Tool-Tip] 에디트플러스에서 자동정렬기능 추가하기

[파이썬] #1- 아나콘다 설치, 아나콘다 파이썬 환경 만들기