2012-03-24 12 views
5

私は、ユーザがgccを持っていて、移植可能なCコードを書こうとしており、glibがインストールされています。glib gunicharとwchar_tの違いは何ですか?また、クロスプラットフォームソリューションの方が優れていますか?

すべての私の研究から、私はgccで、wchar_tは常に4バイトとして定義されていることを発見した、とglibgunicharも4バイトです。 gunicharのように、wchar_tも同様UCS4としてエンコードされている場合、私はないを考え出してい

です。これは本当ですか?その場合、私はgunichar*wchar_t*にキャストし、stdc wcs*の関数を使用する必要がありますか?

答えて

8

GLibを使用する場合は、wchar_tを使用しないでください。ユニコードサポートを使用すると、が多く、がC標準ライブラリのサポートよりも優れています。

wchar_tは、LinuxとMac OS(および他のいくつか)では4バイト、Windowsではなく(2バイトあり)、その他のものでは4バイトです。ポータブルコードとは、ペストのようにwchar_tを避けることを意味します。

+0

hmm。ありがとう。私はちょうどglibのUnicode関数のほとんどすべてがutf8文字列で動作していることに気付きました。そして、私が理解していること(間違っている可能性があります)から、マルチバイトコード化されたchar配列を反復処理することは、イテレータを使用して、完全なcharと単純にバイトではありません。私は今、ドキュメントを再チェックし、g_utf8_next_char()はマクロとして実装されているので、それは私にはそれほど大きな問題ではないと思います。再度、感謝します。 – ckot

+1

@skotまともなユニコードのサポートは、あなたがそれを置くとどんな方法でも高価です。あなたのプログラム/ライブラリが動作してからは、パフォーマンスについて心配してください。 – rubenvb

+1

良い点。これまでのことがうまくいっているように見えるので、必要なときにはその橋を渡ります。再度、感謝します。 – ckot

関連する問題