C++/Syntax
2021. 3. 9. 19:20
전처리기 (Preprocessor)
기능
파일 포함시키기
#include
특정 파일을 현재 위치에 첨부하여 하나의 파일처럼 컴파일한다.
조건부 컴파일
#if
,#elif
,#else
,#ifdef
,#ifndef
,#endif
등조건에 해당되는 코드만 실행한다.
defined
키워드와 같이 사용하여 복합적으로 정의할 수 있다.OS에 따라 다른 파일을 포함시키는 예제
#ifdef __unix__ /* __unix__ is usually defined by compilers targeting Unix systems */ # include <unistd.h> #elif defined _WIN32 /* _Win32 is usually defined by compilers targeting 32 or 64 bit Windows systems */ # include <windows.h> #endif
32, 64비트에 따라 다른 동작을 하는 예제
#if !(defined __LP64__ || defined __LLP64__) || defined _WIN32 && !defined _WIN64 // we are compiling for a 32-bit system #else // we are compiling for a 64-bit system #endif
매크로
#define
,#undef
컴파일 중 토큰이 나오면 바로 해당 값으로 바꾸어 컴파일한다. (단순한 문자 교환)
정의한 파일 내부에서만 적용된다.
대상변환형(object-like macros) : 인수 X
유사함수변환형(function-like macros) : 인수 O
매크로 정의
#define <identifier> <replacement token list> // object-like macro #define <identifier>(<parameter list>) <replacement token list> // function-like macro, note parameters
매크로 삭제
#undef <identifier> // delete the macro
##
토큰 연결 연산자두 개의 토큰을 하나로 연결
#define DECLARE_STRUCT_TYPE(name) typedef struct name##_s name##_t DECLARE_STRUCT_TYPE(g_object); // 변환 결과는 typedef struct g_object_s g_object_t;
#pragma
- 컴파일러에게 특정 옵션이나 라이브러리 형태 등을 지정할 수 있다.
참고
'C++ > Syntax' 카테고리의 다른 글
C++ 소수점 (Decimal Point) (0) | 2021.03.09 |
---|---|
C++ 자료형 (Data Type) (0) | 2021.03.09 |
C++ Namespace (0) | 2021.03.09 |
C++ 헤더가드 (Header Guard) (0) | 2021.03.09 |
C++ 초기화 (Initialization) (0) | 2021.03.09 |