본문 바로가기
언어/C, C++

[C++] constexpr

by minhyeok.lee 2024. 10. 25.
반응형

constexpr이란?

constexpr은 C++11부터 도입된 키워드로, 컴파일 타임에 상수 값을 평가하여 정의할 수 있게 한다.


예시

constexpr TickType_t US_DELAY = 250;

 


장점

1. 타입 안전성

- constexpr은 타입이 있는 상수를 정의하므로, 컴파일 타임에 타입 검사를 할 수 있다.

- 이는 코드의 안정성과 디버깅의 용이성을 높인다.

 

2. 컴파일 타임 평가

- 컴파일 타임에 값이 결정되므로, 최적화가 잘 이루어진다.

- 상수 값은 실행 중 메모리를 차지하지 않고, 플래시 메모리나 레지스터에 직접 저장될 수 있다.

 

3. 스코프 관리 가능

- constexpr은 변수가 선언된 스코프 내에서만 유효하므로, 전역 변수와 지역 변수를 효과적으로 관리할 수 있다.


 

단점

1. 복잡한 초기화 제한

- constexpr은 컴파일 타임에 평가되어야 하기 때문에, 복잡한 런타임 연산이나 I/O 연산 등은 사용할 수 없다.

 

2. 메모리 제약

- 작은 상수나 간단한 표현식에는 적합하지만, 큰 배열이나 복잡한 데이터 구조를 constexpr로 정의하는 데는 한계가 있다.

반응형

'언어 > C, C++' 카테고리의 다른 글

[C++] #define, constexpr, PROGEM 비교  (0) 2024.10.27
[C++] PROGEM  (0) 2024.10.26
[C++] #define  (0) 2024.10.24
[C, C++] 모든 타입 정리  (0) 2024.04.24
[C++] constexpr이란? const와 constexpr의 차이 ( const vs constexpr )  (0) 2024.01.08

댓글