加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C使用较新编译器的功能生成供旧编译器使用的代码

发布时间:2020-12-16 09:55:57 所属栏目:百科 来源:网络整理
导读:我一直在研究“新的”C标准(C 11和C 14)的一些特性,这让我想到了什么.我目前正在为我的项目使用VC 2008编译器(出于各种原因),这意味着我可以访问的最新标准是C 03,加上TR1. TR1有一些不错的东西,但C 11和C 14中的功能很不错. 我的问题是:是否有任何方法可以
我一直在研究“新的”C标准(C 11和C 14)的一些特性,这让我想到了什么.我目前正在为我的项目使用VC 2008编译器(出于各种原因),这意味着我可以访问的最新标准是C 03,加上TR1. TR1有一些不错的东西,但C 11和C 14中的功能很不错.

我的问题是:是否有任何方法可以使用较新的编译器(比如MSVC2012或2013)使用较新的C 11和C 14功能构建库或DLL,然后将其链接到运行’08编译器?

我能想到的唯一不起作用的是我必须在我的’08编译器项目包含的头中具有C 11或C 14特性的任何地方.但是,只要所有“新”都隐藏在我的界面后面,这不应该起作用吗?

解决方法

是的,但它会变得丑陋..因为ABI不兼容你必须下到“extern”C“{}”ABIness.

这意味着你根本无法传递C对象……就像我说的那样痛苦.它还意味着它必须是一个DLL,因为您将无法在静态库中与另一个ABI链接.

如果它值得在C API中包装一个DLL只是为了使用一些新功能,那么由我决定,我建议只升级整个项目.

我差点忘了,你可能也无法链接导入库,所以你必须有一些使用LoadLibrary,GetProcAddress和FreeLibrary的代码(我提到这是丑陋/痛苦吗?).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读