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