C 03库与C 11源代码
如果我有C 03编写的库,并将其编译到静态库中,那么可以在C 11中使用它吗?也是相反的(C 11静态库与C 03).
更新: 解决方法
它主要取决于您如何在库中使用C标准库.
>如果你根本不使用它,那么你不太可能会遇到任何问题. >将标准库对象传递到库或从库传递标准库对象将不会始终工作(例如,C 11模式中的std :: list最终会比C 98模式中的更大,因为它正在增加大小数据成员,而std :: string的表示正在更改为非引用计数). g开发人员有计划在链接时引入一种符号污点的形式来捕捉这些问题,所以如果遇到任何有问题的案例,您将收到错误,但是这还没有在g中实现,并且可能永远不会实现铛.您可以通过确保库的界面不涉及标准库类型来避免此问题. >如果你使用libc,你不应该看到任何问题. libc被设计为在C 98和C 11模式之间是二进制兼容的.>如果您在程序中使用库中的libc和libstdc,反之亦然,则大多数不兼容性将在链接时被捕获. (libc使用命名空间std中的内联命名空间,其中包含大部分符号,如果您尝试跨越边界传递libstdc的类型,则会导致链接时间不兼容).但是,如果库的接口间接包含标准库类型(例如,如果使用具有标准库类型的结构作为成员),则可能仍然存在运行时问题.对于libc不是版本的类型,它的目标是与libstdc(C 98和C 11模式)二进制兼容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |