2013-03-11 82 views
1

我正在開發一個符合-fshort-wchar標誌的跨平臺項目 因此wchar_t類型是2字節。在Windows上很好,但在Linux上,這意味着沒有libc的功能,如printffprintf在linux和gcc中支持16位wchar_t

我一直在尋找一個良好的解決方案,現在一段時間,坦率地說有點絕望。

有沒有人有一個好主意,除了完全避免使用libc函數?

+0

如果你使用寬字符時,必須使用['wprintf'(HTTP:// Linux操作系統。 die.net/man/3/wprintf)而不是'printf'。 – 2013-03-11 12:00:45

+0

問題是,在Linux(gcc)中,wprintf僅適用於32位wchar_t – 2013-03-11 14:28:30

+0

這是因爲'wchar_t'的表示取決於平臺和語言環境。你的程序使用的那個必須與你的libc支持的那個匹配。閱讀[this](http://icu-project.org/docs/papers/unicode_wchar_t.html)瞭解更多信息。 – 2013-03-11 15:13:24

回答

0

這一個#ifdef內部可能幫助(我沒有測試它雖然):

typedef __u16 wchar_t16;