티스토리 뷰

C++ Language/C++

[C++] 전처리

OManager 2018. 12. 27. 17:51

1. 전처리의 종류 

 

 #define 

 #error 

 #import 

 #undef

 #elif 

 #if 

 #include 

 #using

 #else 

 #ifdef 

 #line 

 #endif 

 #ifndef 

 #pragma 


2. 조건부 포함 (Conditional inclusion)

type cast 는 포함할 수 없다. 

단항 연산자는 포함이 가능하다. 


#define MAX

or 

#define (MAX)



3. 소스 파일 포함 (Source file inclusion)


4. 매크로 대체 (Macro replacement)


5. 라인 제어 (Line control)


6. 오류 지시문 (Error directive)


7. pragma 지시문 (Pragma directive)


8. Null 지시문 (Null directive)


9. 내장 매크로 이름 (Predefined macro names)



2. #define

    문자열을 대체하도록 한다. 

    요즘은 잘 사용하지 않는다. 

    사용할 일이 있으면, const를 사용하는 것 이 컴파일이나 디버깅에 훨씬 효율적이다.  

    사용하는 방법은 아래와 같다 

#define MAXRANGE 1024

   위와 같이하면 컴파일러가 코딩 내용에서 MAXRANGE를 만나면 1024로 대체된다.


   ANSI 내장 매크로는 아래 내용과 같다. 

 __DATE__ 

 소스의 컴파일 날짜

 __FILE__

 소스파일의 전체 경로 

 __LINE__

 소스파일의 행번호 (정확하게 카운터를 어떻게 하는지 잘 모르겠음)

 __STDC__

 ANSI C 를 완전히 준수함을 나타낸다. 

 __TIME__

 현재 소스 파일의 최신 컴파일 시간

 __TIMESTAMP__

 현재 소스 파일의 최종 수정 날짜


#include <iostream>

int main()

{

    std::cout<< __DATE__ << std::endl;

    std::cout<< __FILE__ << std::endl;

    std::cout<< __LINE__ << std::endl;

    std::cout<< __TIME__ << std::endl;

    std::cout<< __TIMESTAMP__ << std::endl;

    return 0;

}

위와 같이 처리하면 결과물은 아래와 같이 나온다. 

특별하게 사용할 일은 없다. 


Dec 27 2018

C:\CPlusPlus\IIotServer\main.cpp

16

16:49:47

Thu Dec 27 16:49:47 2018


3. #error

   컴파일러가 #error를 만나면  메시지를 출력하고 컴파일을 중지한다. 

   요즘은 잘 사용하지 않는다. 

   디버깅툴이 없을 경우 코딩의 메시지 출력용으로 사용한다. 

   std::cout 을 사용하는 것이 훨씬 효율적이다. 

   사용방법은 아래와 같다. 

int main()

{

    SvStart svStart;

    #error "ERROR MESSAGE";

    svStart.show();

    exec();

}



4. #import

   외부 라이브러리를 읽어 들일때 사용한다. 

   일반적으로 사용할 일은 없으나 상용라이브러리를 사용할 경우에 많이 사용한다. 

   외부 라이브러리란 olb, tlb, dll 등의 확장자를 가지는 파일들을 말한다.

   컴파일러에 따라서 확장자가 다를 수 있으니 주의가 필요하다. 

   사용하는 방법은 아래와 같다. 

 #import "..\drawctl\drawctl.tlb" no_namespace, raw_interfaces_only

   임포트 속성은 여러가지가 있다. 

   

5. #undef


6. #elif

  

7. #if


8. #include

 

9. #using


10. #else


11. #ifdef


12. #line


13. #endif


14. #ifndef


15. #pragma


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함