gcc
GNU C/C++編譯器也可以正確支持wchar_t字符和字符串,但是源代碼的保存格式必須符合
下面條件:
一、源代碼文件的保存編碼必須是UTF-8
二、UTF-8編碼格式的源代碼文件,不能有BOM標(biāo)志頭。
只有源代碼文件符合上面兩個(gè)條件,gcc才會(huì)正確支持wchar_t字符和字符串。如果不符合
上面兩個(gè)條件的話,有可能會(huì)編譯出錯(cuò),有可能會(huì)產(chǎn)生錯(cuò)誤的wchar_t字符和字符串。
gcc在Windows平臺(tái)下,wchar_t是16位類型,在Linux平臺(tái)下,wchar_t是32位類型。
另外,GCC提供了以下的參數(shù)開(kāi)關(guān)來(lái)支持其它文字編碼的源文件:
(a)-finput-charset=charset
gcc在默認(rèn)情況下,總是假設(shè)源代碼的編碼是UTF-8,如果是其它編碼的源代碼文件,
源代碼里面又用到了wchar_t的類型,則可以使用-finput-charset=charset這個(gè)參數(shù)
來(lái)實(shí)現(xiàn)。
例如通常使用GBK編碼的源代碼可以假如參數(shù):-finput-charset=GBK
(b)-fwide-exec-charset=charset
默認(rèn)情況下,gcc在Windows平臺(tái)下,寬字符串串常量的每個(gè)字符是16位UTF-16類型,
在Linux平臺(tái)下,寬字符串串常量的每個(gè)字符是32位UTF-32類型,
使用這個(gè)參數(shù),可以改變寬字符串串常量的類型。
例如在x86的機(jī)器環(huán)境,Linux操作系統(tǒng)下,要使例如 L"漢字" 編譯后保存為UTF-16
的字符串,則可以使用 -fwide-exec-charset=UTF-16LE