constexpr specifier (since C23)
From cppreference.net
constexpr 저장 클래스 지정자로 선언된 스칼라 객체는 상수 입니다. 정적 초기화 규칙에 따라 완전하고 명시적으로 초기화되어야 합니다. 여전히 선언에 적합한 링크를 가지며 주소를 취할 수 있도록 런타임에 존재합니다; 단순히 런타임에 어떤 방식으로도 수정될 수 없으며, 즉 컴파일러는 객체의 고정된 값을 다른 어떤 상수 표현식 에서도 사용할 수 있습니다.
또한, 이러한 상수의 초기화에 사용되는 상수 표현식은 컴파일 타임에 검사됩니다.
부동 소수점 타입의 초기화자는 번역 시점 부동 소수점 환경으로 평가되어야 합니다.
constexpr 로 선언될 수 있는 객체의 타입에는 몇 가지 제한 사항이 있습니다. 즉, 다음 구성 요소들은 constexpr 로 지정될 수 없습니다:
목차 |
키워드
예제
이 코드 실행
#include <fenv.h> #include <stdio.h> int main(void) { constexpr float f = 23.0f; constexpr float g = 33.0f; fesetround(FE_TOWARDZERO); constexpr float h = f / g; // 위의 fesetround() 영향을 받지 않음 printf("%f\n", h); }
출력:
0.696969
참고문헌
- C23 표준 (ISO/IEC 9899:2024):
-
- 6.7.2 Storage-class specifiers (p: 98-103)
참고 항목
|
C++ 문서
참조:
constexpr
타입 지정자
|