Maison > développement back-end > C++ > Quels changements radicaux le C 11 a-t-il introduits ?

Quels changements radicaux le C 11 a-t-il introduits ?

Patricia Arquette
Libérer: 2024-12-11 14:43:10
original
919 Les gens l'ont consulté

What Breaking Changes Did C  11 Introduce?

Modifications avec rupture introduites dans C 11

C 11 introduit plusieurs modifications avec rupture qui peuvent entraîner l'échec du code précédemment valide lors de la compilation. Un changement notable est l'introduction de l'opérateur explicite bool() dans la bibliothèque standard, remplaçant les instances de l'opérateur void*(). Bien que ce changement affecte principalement le code invalide qui reposait sur des conversions implicites, il constitue toujours un changement radical.

Modifications linguistiques principales

  • Mots clés alignas, alignof, char16_t , char32_t, constexpr, decltype, nosauf, nullptr, static_assert et thread_local sont introduit.
  • Les littéraux entiers plus grands que long peuvent désormais être traités comme des longs longs signés au lieu d'entiers non signés.
  • La division est désormais toujours arrondie vers 0, contrairement à C 2003, qui pouvait arrondir vers l'infini négatif dans certains cas.
  • Le mot-clé auto ne peut plus être utilisé comme spécificateur de classe de stockage, car il est réservé à un nouveau fonctionnalité.
  • Les conversions restreintes provoquent des incompatibilités. Par exemple, l'attribution d'un double à un int n'est plus valide.
  • Les fonctions membres spéciales implicites sont définies comme supprimées lorsque leur définition explicite serait mal formée, ce qui entraînerait des erreurs dans un code précédemment valide.
  • Les destructeurs déclarés par l'utilisateur ont une spécification d'exception implicite (nosauf(true)), qui peut déclencher un comportement différent dans les blocs catch.
  • Le mot-clé export n'est plus valide dans C 11.
  • Opérateurs >> peut désormais être utilisé pour fermer deux modèles, affectant potentiellement le code qui utilisait la séquence >> en tant qu'opérateur de quart de travail.
  • Les appels de fonctions dépendants avec liaison interne sont désormais autorisés.

Modifications de la bibliothèque

  • Bibliothèque standard Les identifiants introduits dans C 11 peuvent entrer en conflit avec les identifiants définis par l'utilisateur.
  • Les en-têtes incluent qui font référence à de nouveaux les en-têtes de la bibliothèque standard C 11 peuvent échouer à se compiler.
  • La fonction d'échange a été déplacée de à .
  • L'espace de noms global posix est désormais réservé.
  • Les macros override, final, carry_dependency et noreturn ne sont plus valides.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal