作者z1976 (z1976)
看板C_and_CPP
标题[问题] C++ builder的编译器规格
时间Thu Oct 19 21:13:47 2017
因为我现在做的专案希望可以在不同编译器和IDE之间 (e.g. bcb, vc++, qt, gcc or cl
ang) 共用程式码,所以要做一个桥接的程式,把差异的地方统一1个对外介面。需要透过
一些巨集来判断环境。
其实毛最多的就字串处理函数而已。但我发现C++ Builder (以下简称BCB)
在32位元组态下的支援性不是很好判断。公司用的版本是XE7。
它的__cplusplus是1,但是它却有define __STDC_LIB_EXT__ ,
所以它有一些 _s结尾的函数可以用。
但也不是每个_s 函数它都有支援,像是宽字串互转的mbstowcs_s和wcstombs_s就没有。
所以也不能用__STDC_LIB_EXT__或__plusplus来概括说有无支援_s函数
必须额外针对if defined(__BORLANDC__)来处理。
另外,像是vswprintf 在别的编译器都是4个参数,但BCB是3个(少了数量那一个)
这也要另外判别是不是BCB
会不会是BCB 32位元的tool chian比较没办法用通用的macro来判断其支援性?
(也许规格上没完全支援到C++11,但是有implement了部份函数来相容之类的?)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.227.176.110
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1508418829.A.4D1.html
1F:嘘 Sidney0503: 请讲中文10/19 21:31
2F:推 Bencrie: 帮翻译 宏 = macro = 巨集10/19 21:47
抱歉改回来了 = =
3F:推 longlongint: 最後一段可以补一行 "请问BCB的规范要去哪里查?" 10/19 22:35
4F:→ longlongint: 之类的 10/19 22:35
5F:→ longlongint: 所以就是开自己的函数,函数内用巨集来分环境? 10/19 22:37
6F:→ z1976: 楼上,是的 10/19 22:39
7F:→ z1976: 还有像是没有_s函数的版本就自己加这样。因为MS-VS14对於 10/19 23:28
8F:→ z1976: 字串函数是规定要用xxx_s来取代旧的;这样也比较安全 10/19 23:31
※ 编辑: z1976 (36.224.123.9), 10/20/2017 02:40:16
9F:→ kingofsdtw: typedef unsigned long long UINT64; 10/21 01:14
10F:→ kingofsdtw: typedef unsigned int UINT32; 10/21 01:15
11F:→ kingofsdtw: 或许tools chain <type.h>会定义 10/21 01:15
13F:→ kingofsdtw: 不然就是运行build.bash/build.bat 10/21 01:18
14F:→ kingofsdtw: echo "BUILD_TOOLS=xxx" > env.h 10/21 01:19
15F:推 Sirctal: 天阿 什麽年代了 还在C++ builder... 10/22 20:32
16F:推 Bencrie: 还好吧。又不是 BCB6 10/22 21:04