>백엔드 개발 >C++ >C 11에서는 어떤 획기적인 변경 사항이 도입되었나요?

C 11에서는 어떤 획기적인 변경 사항이 도입되었나요?

Patricia Arquette
Patricia Arquette원래의
2024-12-11 14:43:10930검색

What Breaking Changes Did C  11 Introduce?

C 11에 도입된 주요 변경 사항

C 11에는 이전에 유효했던 코드가 컴파일 중에 실패할 수 있는 몇 가지 주요 변경 사항이 도입되었습니다. 주목할만한 변화 중 하나는 표준 라이브러리에 명시적 연산자 bool()이 도입되어 연산자 void*()의 인스턴스를 대체한다는 것입니다. 이 변경 사항은 주로 암시적 변환에 의존하는 유효하지 않은 코드에 영향을 주지만 여전히 브레이킹 체인지입니다.

핵심 언어 변경 사항

  • 키워드 alignas, alignof, char16_t , char32_t, constexpr, decltype, noException, nullptr, static_assert 및 thread_local이 도입되었습니다.
  • long보다 큰 정수 리터럴은 이제 부호 없는 정수 대신 부호 있는 long long으로 처리될 수 있습니다.
  • 음수로 반올림될 수 있는 C 2003과 달리 이제 Division은 항상 0으로 반올림됩니다. 어떤 경우에는 무한대입니다.
  • auto 키워드는 더 이상 스토리지 클래스 지정자로 사용할 수 없습니다. 새로운 기능입니다.
  • 변환 범위를 좁히면 비호환성이 발생합니다. 예를 들어, int에 double을 할당하는 것은 이제 유효하지 않습니다.
  • 암시적 특수 멤버 함수는 명시적 정의의 형식이 잘못되어 이전에 유효했던 코드에서 오류가 발생하는 경우 삭제된 것으로 정의됩니다.
  • 사용자 선언 소멸자에는 암시적 예외 사양(noException(true))이 있으며, 이는 catch 블록에서 다른 동작을 트리거할 수 있습니다.
  • 내보내기 키워드는 no입니다. C 11에서는 더 오래 유효합니다.
  • 연산자 >> 이제 두 개의 템플릿을 닫는 데 사용할 수 있으며 >> 시퀀스를 사용한 코드에 잠재적으로 영향을 줄 수 있습니다.
  • 이제 내부 연결을 통한 종속 함수 호출이 허용됩니다.

라이브러리 변경

  • 표준 라이브러리 C 11에 도입된 식별자는 사용자 정의 식별자와 충돌할 수 있습니다.
  • C 11 표준 라이브러리의 새 헤더를 참조하는 헤더 포함이 컴파일에 실패할 수 있습니다.
  • 스왑 기능이 <알고리즘>
  • 이제 posix 전역 네임스페이스가 예약되었습니다.
  • 매크로 override, final, carry_dependent 및 noreturn은 더 이상 유효하지 않습니다.

위 내용은 C 11에서는 어떤 획기적인 변경 사항이 도입되었나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.