C共享对象是否向后兼容(标准智能)

时间:2015-01-16 14:43:10

标签: c shared-libraries backwards-compatibility c11

我有一个相当简单的问题:

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

PS:我用Google搜索了一下,没有看到答案,而且我在手机上,所以,作为预警,没有"可能重复"在我的屏幕上列出。

1 个答案:

答案 0 :(得分:1)

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

您应该担心的是头文件。如果你有"流浪" _Generic在那里,并且客户端有一个pre-C11编译器,这会崩溃。因此,您必须#if/#else使用__STDC_VERSION__标题的{{1}}来保护C11之前的编译器,以便查看此内容。