Heim > Backend-Entwicklung > C++ > Welche wichtigen Änderungen sollte ich bei der Migration von Code auf C 11 beachten?

Welche wichtigen Änderungen sollte ich bei der Migration von Code auf C 11 beachten?

Susan Sarandon
Freigeben: 2024-12-24 17:19:28
Original
484 Leute haben es durchsucht

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

Breaking Changes in C 11

C 11 führte wesentliche Änderungen ein, die sich auf die Kompilierung von vorhandenem Code auswirken können, einschließlich der folgenden:

Kernsprache

  • Die Einführung expliziter Operatoren bool() in der Standardbibliothek und ersetzt Instanzen des Operators void*(). Diese Änderung kann dazu führen, dass Code, der zuvor auf impliziten Konvertierungen beruhte, nicht kompiliert werden kann.
  • Neue Schlüsselwörter, einschließlich alignas, alignof, char16_t, constexpr und nullptr, können mit vorhandenen Bezeichnern in Code in Konflikt geraten, der nicht den Namenskonventionen entsprach .
  • Das Verhalten der Ganzzahldivision hat sich geändert, da C 11 das Ergebnis immer in Richtung 0 rundet, während C 03 Das Runden in Richtung 0 oder negativer Unendlichkeit ist zulässig.
  • Implizit deklarierte spezielle Elementfunktionen wie Konstruktoren oder Destruktoren gelten jetzt als gelöscht, wenn ihre implizite Definition falsch formatiert gewesen wäre, was dazu führen kann, dass Code diese Funktionen verwendet Funktionen werden in bestimmten Kontexten ungültig.
  • Benutzerdeklarierte Destruktoren haben eine implizite Ausnahmespezifikation, was bedeutet, dass sie keine Ausnahmen auslösen können. Code, der auf Destruktoren basiert, die Ausnahmen auslösen, muss möglicherweise geändert werden.
  • Abhängige Aufrufe von Funktionen mit interner Verknüpfung sind jetzt zulässig, was die Auflösung überladener Funktionen in Vorlagen ändern kann.

Bibliotheksänderungen

  • Bezeichner, die der C-Standardbibliothek in C hinzugefügt wurden 11 kann mit vorhandenen Bezeichnern im Code in Konflikt geraten, der Header mit denselben Namen verwendet.
  • Die Swap-Funktion wurde aus dem verschoben. Header zum Kopfzeile. Code, der Möglicherweise muss es aktualisiert werden, um stattdessen.
  • Der globale Namensraum posix ist jetzt für die Standardisierung reserviert. Code, der Bezeichner in diesem Namespace definiert, muss möglicherweise geändert werden.
  • Makros mit den Namen „override“, „final“, „carries_dependency“ oder „noreturn“ sind in C 11 ungültig. Code, der diese Makros definiert, muss möglicherweise aktualisiert werden.

Das obige ist der detaillierte Inhalt vonWelche wichtigen Änderungen sollte ich bei der Migration von Code auf C 11 beachten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage