C++/Tips
[C++] Predefined Macro
메리사츠
2021. 6. 23. 15:57
1. Predefined macro
=> 미리 정의된 매크로를 사용하여 특정 (버전) 컴파일러 / 특정 환경 등에 대한 코드를 조건부로 컴파일 할 수 있게 하는 것
=> 사용자가 재정의 하거나 정의해서는 안됨(컴파일러가 정의)
2. Examples
__LINE__ // 매크로가 사용되는 라인의 라인 번호
__FILE__ // 매크로가 사용되는 파일의 파일 이름
__DATE__ // 파일 컴파일 날짜("mmm dd yyy")
__TIME__ // 파일 컴파일 시간("hhh mm ss")
__cplusplus // C++ 컴파일러값(98,03 : 199711L / 11 : 201103L / 14 : 201402L)
//C++ 11
__STDC_HOSTED__ // 구현이 호스트되는경우 1로 정의, freestanding은 0
__STDC_VERSION__ // C버전
__STDC_MB_MIGHT_NEQ_WC__ // 기본 문자 집합의 인코딩 값이 넓은 상대값과 같지 않을 수 있는 경우 1
__STDC_ISO_10646__ // wcar_t가 유니코드로 인코딩 된 경우 정의, yyymmL로 최신 유니코드 개정판 표현
__STDCPP_STRICT_POINTER_SAFETY__ // 구현에 strict pointer safety일경우 1로 정의
__STDCPP_THREADS__ // 프로그램에 둘 이상의 실행 thread가 있는 경우 1
//C++ 17
__STDCPP_DEFAULT_NEW_ALIGNMENT__ // size_t가 포함되어있으며, alignment-unaware operator new에 대한 호출에 사용
__STDC__ // C로 컴파일 할때만 정의되어 완전한 C 표준 준수를 나타냄