Mac OS X システムでファイル wchar.h を調べているときに、__cplusplust が定義されておらず、wchar_t の最大サイズが 2 バイトの場合 (コンパイラ オプション -fshort を使用)、wcscpy、wcscat などの str 関数に相当する wchar_t が汚染されていることがわかりました。 -wchar)。
C プログラムでは、-fshort-wchar が定義されていると、そのような関数を使用できないようです。-fshort-wchar が使用されているときに wchar_t 関数を使用することの意味は何ですか?
なぜ -fshort-wchar を使用する必要があるのか疑問に思われるかもしれません。wchar_t のサイズが 2 バイトである Windows 用に最初に作成されたアプリケーションを移植しているためです。また、wchar_t 文字列に保持されているデータはファイルに書き込まれ、2 つのアプリケーション間で交換されます。
異なるプラットフォームでの wchar_t の変動性を処理する良い方法は何ですか? Windows での前提は、wchar_t が 16 ビットであることです。