개요
- reference
- C++11 이상에 도입된 C++ 언어 및 라이브러리 기능에 해당하는 일련의 전처리기 매크로를 정의
- attributes
__has_cpp_attribute( attribute-token )
- attribute에 대한 컴파일러 지원 여부 확인 등에 사용
- language features
- 기능에 대한 매크로
- 년/월에 대한 정수 리터럴로 확장
- 기능 목록은 reference 확인
- library features
- 라이브러리에 대한 매크로
- 년/월에 대한 정수 리터럴로 확장
- 라이브러리 목록은 reference 확인
예제
- 코드
#include <iostream>
using namespace std;
void attributes() {
#if __has_cpp_attribute(assume)
cout << "support assume" << endl;
#endif
#if __has_cpp_attribute(deprecated)
cout << "support deprecated" << endl;
#endif
#if __has_cpp_attribute(maybe_unused)
cout << "support maybe_unused" << endl;
#endif
}
void language_features() {
#if defined(__cpp_concepts)
cout << __cpp_concepts << endl;
#endif
#if defined(__cpp_lambdas)
cout << __cpp_lambdas << endl;
#endif
}
void library_features() {
#if defined(__cpp_lib_concepts)
cout << __cpp_lib_concepts << endl;
#endif
#if defined(__cpp_lib_string_view)
cout << __cpp_lib_string_view << endl;
#endif
}
int main() {
attributes();
cout << "------" << endl;
language_features();
cout << "------" << endl;
library_features();
return 0;
}
- 실행 결과
support deprecated
support maybe_unused
------
202002
200907
------
202002
201803