C 共享对象是否向后兼容(标准方式)

Are C Shared Object Backwards Compatible (Standard-Wise)

我有一个很简单的问题:

我想编写一个使用 C11-Specific _Generic 关键字的库(通过 .so 文件在其他项目中使用)。如果使用该库的项目不需要使用 C11 标准编译他们的项目,我会很高兴。这可能吗?

PS:我用 Google 搜索了一下,没有看到答案,我在 phone 上,所以,作为预警,没有 "Possible Duplicates" 列表我的屏幕。

.so 文件对 _Generic 一无所知,此功能在编译时做出决定。

您应该担心的是您的 header 文件。如果你有 "stray" _Generic 并且客户端有一个 C11 之前的编译器,这会崩溃。所以你必须 #if/#else 你 header 的部分 __STDC_VERSION__ 来保护 C11 之前的编译器看到这个。