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