因為我現在做的專案希望可以在不同編譯器和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了部份函數來相容之類的?)