> 백엔드 개발 > C++ > C 11에서 지정된 초기화 프로그램이 제외된 이유는 무엇입니까?

C 11에서 지정된 초기화 프로그램이 제외된 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-28 10:52:14
원래의
119명이 탐색했습니다.

Why Were Designated Initializers Excluded from C  11?

C 11의 지정 이니셜라이저: 제외 근거

C99에서는 제공된 코드 조각과 같이 지정된 이니셜라이저 목록을 사용할 수 있습니다. , C 11에서는 이 기능을 금지합니다. C 11 표준 위원회의 이번 결정은 왜 이렇게 편리한 기능이 제외되었는지 의문을 제기합니다.

C.1.7[diff.decl].4: C의 제한 사항 :

C에 지정 이니셜라이저를 도입하면 여러 가지 문제가 발생할 수 있습니다. 과제:

  • 불확실한 평가 순서: C99에서는 지정된 초기화에 대한 평가 순서가 지정되지 않아 초기화된 멤버가 상호 작용할 경우 잠재적으로 정의되지 않은 동작이 발생할 수 있습니다. 이와 대조적으로 C는 이니셜라이저 목록에 대해 엄격한 평가 순서를 적용하여 이러한 문제를 방지합니다.
  • C99의 불일치 동작: C에서 지정된 이니셜라이저를 허용하려면 기존 C99 구현과의 호환성을 깨야 합니다. 특정 평가 순서를 시행합니다. 이는 잠재적인 이식성 문제를 야기했을 것입니다.
  • 중첩 지정자 및 배열 초기화: C99는 또한 중첩 지정자 및 배열 지정 초기화를 허용합니다. 일관되지 않은 행동.

결론:

C 11 표준 위원회는 지정된 초기화 목록을 제외하기로 선택할 때 이러한 기술적 제한 사항과 호환성 문제 및 일관성 없는 동작의 가능성을 신중하게 고려했습니다. 대신 C는 예측 가능한 동작을 보장하고 기존 규칙과의 호환성을 유지하기 위해 이니셜라이저 목록에 대한 엄격한 평가 순서를 제공합니다.

위 내용은 C 11에서 지정된 초기화 프로그램이 제외된 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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