문자열 길이의 컴파일 시간 계산
컴파일 시간에 문자열 리터럴의 길이를 계산하기 위해 아래 코드 조각은 재귀 함수를 활용합니다.
<code class="cpp">#include <cstdio> int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf("%d %d", length("abcd"), length("abcdefgh")); }</code>
이 함수는 clang에서 생성된 어셈블리 코드에서 알 수 있듯이 예상대로 길이를 성공적으로 계산합니다. 이는 컴파일 타임에 계산되는 결과를 보여줍니다.
표준 보증 컴파일 타임 평가
그러나 컴파일 타임에 상수 표현식의 평가가 표준에 의해 명시적으로 보장되지 않는다는 점에 유의하는 것이 중요합니다. C 표준 섹션 5.19 초안에는 번역 중에 상수 표현식을 평가할 수 있다는 비표준 인용문이 포함되어 있지만 이것이 최종적인 보장을 제공하지는 않습니다.
컴파일 시간 평가 보장
컴파일 타임에 함수가 평가되도록 하기 위해 Bjarne Stroustrup은 결과를 constexpr 변수에 할당할 것을 권장합니다. 이는 다음 예에서 볼 수 있습니다.
<code class="cpp">constexpr int len1 = length("abcd");</code>
추가로 Bjarne Stroustrup은 컴파일 시간 평가가 보장되는 두 가지 구체적인 사례를 간략히 설명합니다.
따라서 안정적인 컴파일 시간 평가를 위해 다음을 따르는 것이 좋습니다. 두 가지 접근 방식 중 하나를 선택하세요.
위 내용은 문자열 길이의 컴파일 타임 평가를 어떻게 보장할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!