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

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

Susan Sarandon
Susan SarandonOriginal
2024-12-23 16:41:16679Durchsuche

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

Welche bahnbrechenden Änderungen werden in C 11 eingeführt?

Eine der wesentlichen Änderungen, die in C 11 eingeführt wurden, ist der explizite Operator bool() in die Standardbibliothek, die Instanzen des Operators void*() ersetzt. Mit dieser Änderung sollte zwar ungültiger Code behoben werden, es sind aber auch andere potenziell wichtige Änderungen zu berücksichtigen.

Kernsprachinkompatibilitäten

  • Geänderte Interpretation von String-Literalen: Vordefinierte Makros wie „u8“ können Zeichenfolgenliterale ändern.
  • Benutzerdefinierte Zeichenfolge Literale: „_x“ in String-Literalen erstellt jetzt benutzerdefinierte String-Literale, anstatt Makros zu erweitern.
  • Neue Schlüsselwörter: Eingeführte Schlüsselwörter wie „constexpr“ und „thread_local“ können Brechen Sie vorhandene Bezeichnernamen auf.
  • Integer-Literal-Änderungen: Ganzzahlige Literale, die den Bereich von „long“ überschreiten, können jetzt zu „long long“ werden.
  • Änderungen der Ganzzahldivision: Das Rundungsverhalten der Ganzzahldivision von C 03 kann sich von der Rundung in Richtung 0 von C 11 unterscheiden.
  • „auto“ als Speicherspezifizierer: C 03-Code mit „auto“ als Speicherspezifizierer kann ungültig werden.
  • Einschränkende Konvertierungen: C 03 einschränkende Konvertierungen (z. B. double zu int) können jetzt ungültig sein.
  • Implizite Löschungen spezieller Mitgliedsfunktionen: Schlecht geformte implizit definierte Mitgliedsfunktionen werden automatisch erkannt gelöscht.
  • Destruktor-Ausnahmespezifikationen: Vom Benutzer deklarierte Destruktoren haben jetzt implizite noexclusive(true)-Spezifikationen.
  • "export"-Deklarationsbeseitigung: C 03-Deklarationen mit „Export“ sind jetzt ungültig.
  • Vorlage Abschließende Änderung: „>>“ in Vorlagen können jetzt zwei Vorlagen schließen, anstatt nur als Verschiebungsoperator berücksichtigt zu werden.
  • Abhängige Aufrufe interner Verknüpfungsfunktionen:Abhängige Aufrufe interner Verknüpfungsfunktionen sind jetzt zulässig.

Bibliothek Änderungen

  • Namespace-Bezeichner:Bezeichner, die der Standardbibliothek hinzugefügt werden, können vorhandenen Code beschädigen.
  • Header Enthält: Bisherige Header befindet sich in bestimmten Standard-Headern (z. B. , ) ist möglicherweise an einen anderen Ort verschoben.
  • Namespace „posix“: Der Namespace „posix“ ist jetzt für zukünftige Standardisierungen reserviert.
  • Makrodefinitionen: Definieren „override“, „final“, „carries_dependency“ oder „noreturn“, wie Makros jetzt sein können ungültig.

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

Stellungnahme:
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