Linking C 17/14/11 Objects
Suppose you have multiple compiled objects from the same compiler/version: one compiled with C 11, another with C 14, and a third with C 17. Assuming all headers use C 11 constructs and there are no interdependencies, which combinations of these objects can be safely linked into a single binary?
GCC
For GCC, linking any combination of these objects is safe. The standard version (-std option) does not affect ABI compatibility, as the implementation ensures this property.
However, issues arise when linking objects compiled with different GCC versions and using unstable features from a newer C standard before the compiler's support is complete. Therefore, linking objects compiled with GCC versions 4.9 and 5 using -std=c 11 or GCC versions 7 and 8 using -std=c 17 will cause problems.
Other Considerations
The above is the detailed content of Can C 11, C 14, and C 17 Objects Be Safely Linked Together?. For more information, please follow other related articles on the PHP Chinese website!