> 백엔드 개발 > C++ > Constexpr 컨텍스트에서 비constexpr 표준 라이브러리 함수에 대한 GCC의 확장 처리가 C 표준을 준수합니까?

Constexpr 컨텍스트에서 비constexpr 표준 라이브러리 함수에 대한 GCC의 확장 처리가 C 표준을 준수합니까?

Mary-Kate Olsen
풀어 주다: 2024-11-28 21:33:14
원래의
825명이 탐색했습니다.

Is GCC's Extensional Treatment of Non-constexpr Standard Library Functions in Constexpr Contexts Conforming to the C   Standard?

constexpr이 아닌 라이브러리 함수의 확장 처리가 적합합니까?

constexpr이 아닌 표준 라이브러리 함수를 constexpr로 처리하는 GCC의 능력 특정 상황에서는 다음과 같은 질문이 제기됩니다.

표준의 모순

C 11 표준 초안에서는 내장 함수를 constexpr로 처리하는 것이 명시적으로 허용되는 것으로 나타났습니다. 그러나 C 12에서는 합의가 바뀌고 제안이 변경되어 C 14에서는 이 동작을 명시적으로 금지하게 되었습니다.

As-If Rule

C 11에서는 마치 규칙이 이 동작을 허용하는지 여부는 불분명했습니다. 일부 의견에서는 그럴 수도 있다고 제안했지만, 이 특정 주제를 다루는 LWG 이슈 2013의 해결에서는 이러한 해석이 확인되지 않았습니다.

GCC의 구현

GCC 구현 이 동작은 constexpr 함수로 암시적 처리를 허용하는 LWG 2013의 이전에 제안된 해결 방법을 기반으로 합니다. 그러나 최종 해결 방법이 변경되어 이 확장은 이제 C 14에서 부적합합니다.

엄격 모드의 적합성

C 14 표준을 준수하기 위해 GCC 엄격한 적합성 모드(-std=c 11 -pedantic 또는 -std=c 14 -pedantic)에서 경고를 발행해야 합니다. constexpr 컨텍스트에서 사용되는 비-constexpr 라이브러리 함수. 또는 이러한 모드에서 이 동작을 비활성화해야 합니다.

내장 면제

컴파일러 내장 기능은 표준에서 다루지 않으므로 다르게 처리될 수 있습니다. constexpr 컨텍스트에서 컴파일러 내장 기능을 사용하는 것이 허용될 가능성이 높습니다.

위 내용은 Constexpr 컨텍스트에서 비constexpr 표준 라이브러리 함수에 대한 GCC의 확장 처리가 C 표준을 준수합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿