티스토리 뷰
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
'C++ Language > C++' 카테고리의 다른 글
[C++] 개발툴과 라이브러리 선정 (2) | 2018.12.05 |
---|---|
[VS Code] Python launch.json (0) | 2018.04.24 |
[개발자] 프로그램 개발은 언제해야 하는가 ? (0) | 2018.04.17 |
[OpenSSL] Windows 64Bit (0) | 2017.05.28 |
[Windows] File 길이가 길어서 삭제 안될때 (0) | 2015.11.16 |