为了兼容各类编译器,放弃对外提供C接

白癜风治疗医师 https://m.39.net/pf/bdfyy/bjzkbdfyy/

前几天一位网友咨询如何用C++中调用CBrother,我发了Demo给他,结果他一直告诉我有问题,远程调试了下,发现他在Winows下用的编译器是MinGW,而我发布CBrother的windows版本使用的是VS,结果发现MinGW和VS在对于同名虚接的重载实现不同,调用错了接口地址导致了崩溃。如此看来,C++的ABI真是一件让人头疼的事情。

这些年来,C++组委会不停的更新C++特性和语法,把C++搞的花里胡哨的,也没说把ABI的实现在各个平台上统一一下。

C++尚且如此,Rust和新出的Carbon还声称要替代C++,不知道是谁给的勇气。我一直理解一门编程语言的存在指的是这门语言的语法,而不应该是对应的某一套代码。比如说老牌的C和C++其语法深入人心,就会有不同的人按照标准去实现不同的编译器。假设某一天世界上所有语言的编译器和解释器代码都丢失了,我相信C语言一定会有人写出新的编译器,并兼容之前历史上的所有二进制文件接口,那么这些所谓的要替代老前辈的新语言会有人为它们重写吗?就算写,又如何兼容以前编译器编译的二进制文件接口呢?想要乱拳打死老师傅,这些年轻的语言需要考虑的问题还很多,不只是简化语法这么简单。他们喊的替代C++的口号,也就是只能圈一波年轻粉了。

CBrother升级到v2.5.2

为了兼容所有编译器,默认提供C接口,如果要使用C++接口需要添加__CBROTHER_CPLUS_PLUS宏,开源的代码也修改为C接口的

支持代码中空闲的大括号,之前注释掉一个if语句后,多余的两个大括号会报错,这一点之前忽视了

新增strascii接口通过下标获取字符串内字符的ascii值

CLibFunc支持从一个地址创建函数

Xml操作类问题修复,增加了几个接口

全局const在module里无法访问的




转载请注明:http://www.aierlanlan.com/cyrz/6793.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了