[C++] 전처리문
안녕하세요. 명월입니다. 이 글은 C++에서 전처리문에 대한 글입니다. 전처리문이란 C++이 컴파일해서 실행되기 전에 처리되는 소스 메크로라고 생각하면 됩니다. 간단한 예를 들면 debug 상태에서
nowonbun.tistory.com
전처리문의 종류는 총 12가지 정도 있습니다.
전처리기설명
| 조건부 포함 전처리문(Conditional inclusions) | |
| #if | 전처리 분기문 if에 해당됩니다. define에 정의 값을 비교합니다. |
| #elif | 전처리 분기문 else if에 해당됩니다. define에 정의 값을 비교한다. elif 전처리문 단독으로 사용할 수 없습니다. |
| #else | 전처리 분기문 else에 해당됩니다. else 전처리문 단독으로 사용할 수 없습니다. |
| #endif | 전처리 분기문의 종료에 해당합니다. |
| #ifdef | define 전처기문이 정의되어 있으면 해당된다. |
| #ifndef | define 전처기문이 정의되어 않으면 해당된다. |
| 매크로 정의 전처리문(macro definitions) | |
| #define | 전처리 매크로 및 상수 정의 |
| #undef | 정의된 전처리문을 무효화한다. |
| 디버깅 라인 전처리문(Line control) | |
| #line | 이미 정의된 전처리문 __LINE__에 소스 정의 라인을 재정의하기 위한 전처리문 |
| 에러 탐지 전처리문(Error directive) | |
| #error | Runtime 중이 아닌 compile 단계에서 일부러 에러를 발생시킬 때 사용한다. |
| 소스 포함 처리 전처리문(Source file inclusion) | |
| #include | 보통 해더 파일을 읽을 때 사용합니다. 최종 빌드 전의 이진 파일이 아닌 소스 형태의 파일을 읽을 때 사용합니다. |
| 지시어 전처리문(Pragma directive) | |
| #pragma | pragma는 세가지 형태로 사용된다. 가장 많이 사용되는 #pragma once는 해더를 여러 곳에서 참조할 경우 한번만 읽는 기능, 즉, a.cpp 소스에서 common.h를 읽고 b.cpp 소스에서 common.h을 읽을 려고 할 때 a.cpp에서 먼저 읽었기 때문에 두번 읽지는 않는다. #pragma comment(lib, 파일이름.lib) 등 해더 내에서 library 참조시에 사용된다. visual studio에 기본적으로 선언되어 있는 lib는 kernel32.lib, user32.lib, gdi32.lib, winspool.lib, comdlg32.lib, advapi32.lib, shell32.lib, ole32.lib, oleaut32.lib, uuid.lib, odbc32.lib, odbccp32.lib #pragma warning(disable:4702)는 4702의 에러를 무시해 주는 전처리 문입니다. |
| 사전 정의된 전처리문(Predefined macro names) | |
| __LINE__ | 컴파일 중인 소스 코드 파일의 현재 행을 나타내는 정수 값입니다. |
| __FILE__ | 컴파일 중인 소스 파일의 추정 이름이 포함 된 문자열 리터럴입니다. |
| __DATE__ | 컴파일 프로세스가 시작된 날짜를 포함하는 "Mmm dd yyyy"형식의 문자열 리터럴입니다. |
| __TIME__ | 컴파일 프로세스가 시작된 시간을 포함하는 "hh : mm : ss"형식의 문자열 리터럴입니다. |
| __cplusplus | 정수 값. 모든 C ++ 컴파일러에는이 상수가 일정한 값으로 정의되어 있습니다. (컴파일러의 버젼과 비슷한 설정) |
| __STDC_HOSTED__ | 구현이 호스팅 된 구현 인 경우 (모든 표준 헤더 사용 가능) 그렇지 않으면 0입니다. |
'PL > C & C++' 카테고리의 다른 글
| [C++] 암시적 형 변환 (Implicit type conversion) (0) | 2023.04.06 |
|---|---|
| [C++] thread, async 차이점 (0) | 2023.04.06 |
| [C++] lambda 표현식 (0) | 2023.03.16 |
| [C&C++] undefined reference to~ /cpp 파일에서 c 파일 불러오기 (0) | 2022.06.22 |
| [C&C++] 조건부 컴파일 사용하기 (0) | 2022.06.22 |