728x90
반응형
몇 가지 매크로는 컴파일러에서 미리 정의한다.
- __cplusplus. C++컴파일에 정의되어 있다.(C컴파일에는 없음)
- __DATE__. "yyyy:mm:dd" 형식의 날짜
- __TIME__. "hh:mm:ss"형식의 시간
- __FILE__. 현재 소스 파일의 이름
- __LINE__. 현재 소스 파일 내의 소스 라인 번호
- __FUNC__. 현재 함수의 이름을 지정하는 구현 정의 구현 정의된 C-스타일 문자열
- __STDC_HOSTED__. 구현이 호스팅 되는 경우 1 그렇지 않으면 0. 또한 구현 시 몇 가지 매크로가 조건부로 정의됨
- __STDC__. C 컴파일에서 정의됨(C++ 컴파일에서는 없음)
- __STDC_MB_MIGHT_NEQ_WC__. wchar_t에 대한 인코딩에서 기본 문자 집합의 구성원이 일반 문자 리터럴의 값과 다른 코드 값을 가질 수 있는 경우 1
- __STCPP_STRICT_POINTER_SAFETY__. 구현에 엄격한 포인터 안정성이 있는 경우 1 그렇지 않으면 정의되지 않음
- __STCPP_THREADS__. 프로그램이 둘 이상의 실행 스레드를 가질 수 있는 경우 1. 그렇지 않으면 정의되지 않음.
예를 들면,
cout << __FUNC__ << "() in file " << __FILE__ << " on line " << __LINE__ << "\n";
대부분의 C++ 구현에서는 사용자가 명령줄이나 다른 형태의 compile-time 환경에서 임의의 매크로를 정의할 수 있다. 예를 들어 NDEBUG는 컴파일이(일부 구현 별) '디버그 모드'에서 수행되고 assert() 매크로에서 사용되지 않는 한 정의된다. 이것은 유용할 수 있지만 소스 텍스트를 읽는 것만으로는 프로그램의 의미를 확신할 수 없음을 의미한다.
728x90
반응형
'Program Language > C & C++' 카테고리의 다른 글
[C++] Finally (0) | 2022.01.13 |
---|---|
[C++] 리소스 관리 (0) | 2022.01.13 |
[C++] constexpr 함수 (0) | 2022.01.13 |
[C++] 함수의 지정자와 수정자 (0) | 2022.01.13 |
[C++] 명시적 유형 변환 (0) | 2022.01.12 |