>백엔드 개발 >C++ >C 11로 마이그레이션할 때 알아야 할 주요 변경 사항은 무엇입니까?

C 11로 마이그레이션할 때 알아야 할 주요 변경 사항은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-23 16:41:16712검색

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

C 11에는 어떤 주요 변경 사항이 도입되나요?

C 11에 도입된 중요한 변경 사항 중 하나는 연산자 void*()의 인스턴스를 대체하는 표준 라이브러리입니다. 이번 변경으로 유효하지 않은 코드가 해결되어야 하지만 고려해야 할 다른 잠재적인 주요 변경 사항이 있습니다.

핵심 언어 비호환성

  • 수정된 문자열 리터럴 해석: "u8"과 같은 사전 정의된 매크로는 문자열을 수정할 수 있습니다. 리터럴.
  • 사용자 정의 문자열 리터럴: 문자열 리터럴의 "_x"는 이제 매크로를 확장하는 대신 사용자 정의 문자열 리터럴을 생성합니다.
  • 새 키워드 : "constexpr" 및 "thread_local"과 같은 도입된 키워드는 기존 식별자를 손상시킬 수 있습니다. names.
  • 정수 리터럴 수정: "long" 범위를 초과하는 정수 리터럴은 이제 "long long"이 될 수 있습니다.
  • 정수 나누기 수정: C 03 정수 나누기 반올림 동작은 C 11의 반올림 동작과 다를 수 있습니다. 0.
  • 저장소 지정자로 "auto": 저장 지정자로 "auto"를 사용하는 C 03 코드는 유효하지 않을 수 있습니다.
  • 변환 범위 좁히기: C 03 축소 변환(예: double을 int로)은 이제 가능합니다. 유효하지 않습니다.
  • 암시적 특수 멤버 함수 삭제: 잘못된 형식의 암시적으로 정의된 멤버 함수는 자동으로 삭제됩니다.
  • 소멸자 예외 사양: 사용자- 선언된 소멸자는 이제 암시적으로 noException(true)을 가집니다.
  • "export" 선언 제거: "export"를 사용하는 C 03 선언은 이제 유효하지 않습니다.
  • 템플릿 종료 수정: "> >" 이제 템플릿에서 시프트 연산자로만 간주되지 않고 두 개의 템플릿을 닫을 수 있습니다.
  • 내부 연결 함수의 종속 호출: 이제 내부 연결 함수의 종속 호출이 허용됩니다.

도서관 수정

  • 네임스페이스 식별자: 표준 라이브러리에 추가된 식별자는 기존 코드를 손상시킬 수 있습니다.
  • 헤더 포함: 이전 헤더 특정 표준 헤더(예: , )가 다른 곳으로 이동했을 수 있습니다.
  • "posix" 네임스페이스: "posix" 네임스페이스는 이제 향후 표준화를 위해 예약되어 있습니다.
  • 매크로 정의 : "재정의", "최종", "carries_dependent" 또는 "noreturn"을 매크로로 정의할 수 있습니다. 이제 유효하지 않습니다.

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

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