[問題] C++ Builder的編譯器規格

看板C_and_CPP (C/C++)作者 (z1976)時間8年前 (2017/10/19 21:13), 8年前編輯推噓3(4111)
留言16則, 6人參與, 8年前最新討論串1/1
因為我現在做的專案希望可以在不同編譯器和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://www.ptt.cc/bbs/C_and_CPP/M.1508418829.A.4D1.html

10/19 21:31, 8年前 , 1F
請講中文
10/19 21:31, 1F

10/19 21:47, 8年前 , 2F
幫翻譯 宏 = macro = 巨集
10/19 21:47, 2F
抱歉改回來了 = =

10/19 22:35, 8年前 , 3F
最後一段可以補一行 "請問BCB的規範要去哪裡查?"
10/19 22:35, 3F

10/19 22:35, 8年前 , 4F
之類的
10/19 22:35, 4F

10/19 22:37, 8年前 , 5F
所以就是開自己的函數,函數內用巨集來分環境?
10/19 22:37, 5F

10/19 22:39, 8年前 , 6F
樓上,是的
10/19 22:39, 6F

10/19 23:28, 8年前 , 7F
還有像是沒有_s函數的版本就自己加這樣。因為MS-VS14對於
10/19 23:28, 7F

10/19 23:31, 8年前 , 8F
字串函數是規定要用xxx_s來取代舊的;這樣也比較安全
10/19 23:31, 8F
※ 編輯: z1976 (36.224.123.9), 10/20/2017 02:40:16

10/21 01:14, 8年前 , 9F
typedef unsigned long long UINT64;
10/21 01:14, 9F

10/21 01:15, 8年前 , 10F
typedef unsigned int UINT32;
10/21 01:15, 10F

10/21 01:15, 8年前 , 11F
或許tools chain <type.h>會定義
10/21 01:15, 11F

10/21 01:16, 8年前 , 12F
10/21 01:16, 12F

10/21 01:18, 8年前 , 13F
不然就是運行build.bash/build.bat
10/21 01:18, 13F

10/21 01:19, 8年前 , 14F
echo "BUILD_TOOLS=xxx" > env.h
10/21 01:19, 14F

10/22 20:32, 8年前 , 15F
天阿 什麼年代了 還在C++ builder...
10/22 20:32, 15F

10/22 21:04, 8年前 , 16F
還好吧。又不是 BCB6
10/22 21:04, 16F
文章代碼(AID): #1PwAKDJH (C_and_CPP)
文章代碼(AID): #1PwAKDJH (C_and_CPP)