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 중국어 웹사이트의 기타 관련 기사를 참조하세요!