Heim > Backend-Entwicklung > C++ > Können C 11-, C 14- und C 17-Objekte mit demselben Compiler sicher verknüpft werden?

Können C 11-, C 14- und C 17-Objekte mit demselben Compiler sicher verknüpft werden?

Mary-Kate Olsen
Freigeben: 2024-12-05 10:52:13
Original
939 Leute haben es durchsucht

Can C  11, C  14, and C  17 Objects be Safely Linked Using the Same Compiler?

Kompatibilität der Verknüpfung von C 17-, C 14- und C 11-Objekten

Sichere Kombinationen

In einem Szenario, in dem drei kompilierte Objekte (A, B , und C) werden mit derselben Compilerversion erstellt:

  • A kompiliert mit C 11 Standard
  • B kompiliert mit C 14 Standard
  • C kompiliert mit C 17 Standard

...und vorausgesetzt:

  • Kopfzeilen sind in C 11 geschrieben
  • Konstrukte haben in allen drei Fällen eine konsistente Semantik Standards
  • Interdependenzen werden korrekt ausgedrückt

...es ist sicher, jede Kombination dieser Objekte zu verknüpfen gemäß GCC. GCC stellt in solchen Fällen die ABI-Kompatibilität sicher, unabhängig von der verwendeten Standardversion.

Vorbehalte

Es können jedoch Verknüpfungsprobleme auftreten, wenn Objekte mit unterschiedlichen GCC-Versionen kompiliert werden und instabile C-Standardfunktionen verwendet werden. Beispielsweise kann das Verknüpfen von mit GCC 4.9 und 5 kompilierten Objekten unter Verwendung des C 11-Standards zu Problemen aufgrund der instabilen C 11-Unterstützung in GCC 4.x führen.

Stabilität von C 03, C 11 und C 17 Die Unterstützung in verschiedenen GCC-Versionen ist wie folgt:

  • C 03: Insgesamt stabil Versionen
  • C 11: Stabil seit GCC 5
  • C 17: Experimentell in GCC 7 und 8

Zusätzliche Überlegungen

  • Wann Stellen Sie bei der Verwendung verschiedener C-Standardversionen sicher, dass die gemeinsam genutzte Bibliothek (libstdc .so) mindestens so neu ist wie die frühere Version Kompilieren Sie eines der Objekte.
  • GCC bietet seit Version 5 zwei Implementierungen von std::string. Objekte, die std::string verwenden, sollten aus Kompatibilitätsgründen mit derselben Implementierung kompiliert werden.

Das obige ist der detaillierte Inhalt vonKönnen C 11-, C 14- und C 17-Objekte mit demselben Compiler sicher verknüpft werden?. 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