Verknüpfen von C 17/14/11-Objekten
Angenommen, Sie haben mehrere kompilierte Objekte vom selben Compiler/der gleichen Version: eines wurde mit C 11 kompiliert , ein weiterer mit C 14 und ein dritter mit C 17. Angenommen, alle Header verwenden C 11-Konstrukte und es gibt keine Abhängigkeiten, welche Kombinationen dieser Objekte können sicher in einer einzigen Binärdatei verknüpft werden?
GCC
Für GCC ist die Verknüpfung einer beliebigen Kombination dieser Objekte sicher. Die Standardversion (Option -std) hat keinen Einfluss auf die ABI-Kompatibilität, da die Implementierung diese Eigenschaft gewährleistet.
Es treten jedoch Probleme auf, wenn Objekte verknüpft werden, die mit verschiedenen GCC-Versionen kompiliert wurden, und instabile Funktionen eines neueren C-Standards vor dem verwendet werden Die Compilerunterstützung ist abgeschlossen. Daher wird das Verknüpfen von Objekten, die mit GCC-Versionen 4.9 und 5 mit -std=c 11 oder GCC-Versionen 7 und 8 mit -std=c 17 kompiliert wurden, Probleme verursachen.
Weitere Überlegungen
Das obige ist der detaillierte Inhalt vonKönnen C 11-, C 14- und C 17-Objekte sicher miteinander verbunden werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!