[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 |