> 백엔드 개발 > C++ > 코드를 C 11로 마이그레이션할 때 어떤 주요 변경 사항을 알아야 합니까?

코드를 C 11로 마이그레이션할 때 어떤 주요 변경 사항을 알아야 합니까?

Susan Sarandon
풀어 주다: 2024-12-24 17:19:28
원래의
484명이 탐색했습니다.

What Breaking Changes Should I Be Aware Of When Migrating Code to C  11?

C 11의 주요 변경 사항

C 11에서는 다음을 포함하여 기존 코드의 컴파일에 영향을 미칠 수 있는 중요한 변경 사항을 도입했습니다.

코어 언어

  • 표준 라이브러리에 명시적 연산자 bool()이 도입되어 연산자 void*()의 인스턴스가 대체되었습니다. 이 변경으로 인해 이전에 암시적 변환에 의존했던 코드가 컴파일되지 않을 수 있습니다.
  • alignas, alignof, char16_t, constexpr 및 nullptr을 포함한 새로운 키워드는 명명 규칙을 따르지 않은 코드의 기존 식별자와 충돌할 수 있습니다. .
  • C 11은 항상 결과를 0으로 반올림하는 반면 C 03은 정수 나누기 동작이 변경되었습니다. 0 또는 음의 무한대로 반올림이 허용됩니다.
  • 생성자나 소멸자와 같이 암시적으로 선언된 특수 멤버 함수는 이제 암시적 정의가 잘못된 형식일 경우 삭제된 것으로 정의됩니다. 이로 인해 코드에서 이러한 함수를 사용할 수 있습니다. 특정 컨텍스트의 함수는 유효하지 않게 됩니다.
  • 사용자 선언 소멸자에는 암시적 예외 사양이 있으므로 예외를 발생시킬 수 없습니다. 예외를 발생시키는 소멸자에 의존하는 코드는 수정해야 할 수도 있습니다.
  • 이제 내부 연결이 있는 함수의 종속 호출이 허용되며 이로 인해 템플릿에서 오버로드된 함수의 해결 방법이 변경될 수 있습니다.

라이브러리 변경

  • C 표준에 식별자 추가 C 11의 라이브러리는 동일한 이름의 헤더를 사용한 코드의 기존 식별자와 충돌할 수 있습니다.
  • 스왑 기능이 헤더를 헤더. <알고리즘> 를 포함하도록 업데이트해야 할 수도 있습니다. 대신.
  • 전역 네임스페이스 posix는 이제 표준화를 위해 예약되어 있습니다. 이 네임스페이스의 식별자를 정의하는 코드를 수정해야 할 수 있습니다.
  • override, final, carry_dependent 또는 noreturn이라는 이름의 매크로는 C 11에서 유효하지 않습니다. 이러한 매크로를 정의하는 코드를 업데이트해야 할 수 있습니다.

위 내용은 코드를 C 11로 마이그레이션할 때 어떤 주요 변경 사항을 알아야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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