• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:glibcをワイド文字=2バイト指定でmake)

glibcをワイド文字=2バイト指定でmake

このQ&Aのポイント
  • glibcを使い、ワイド文字=4バイトのLinux環境下で、ワイド文字=2バイトとしてwchar系ライブラリ関数が使えるようコンパイルする方法を教えてください。
  • Linuxとcygwinで、それぞれワイド文字が4バイトと2バイトで違いがあるため、環境を切り替える方法を知りたいです。
  • Unicodeが1文字2バイト固定で長い文字列を含むデータを作成する状況で、UCS-2として直接データを扱いたいと考えています。glibcをワイド文字=2バイト指定でmakeする方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

一応、gccに-fshort-wcharオプションを指定してコンパイルすればwchar_t型をunsigned short intと同じサイズになりますが、それだけでまともに動くかどうかは十分な検証が必要です。 > 同じソースから出来てると思われるLinuxとcygwinで、それぞれワイド文字が > 4バイトと2バイトと違う形で環境が作られてるので、何かしら切り替える > 方法があると思うのですが... GCC自体のソースは共通ですが、Cygwinの標準ライブラリはnewlibですのでglibcと同じではありません。 > そのような状況で、iconvなどを使って一度全文字UCS-4に変えてから > wcs系関数を使うと、無駄が多いと思い、できればUCS-2として直接 > データを扱えるようにしたいと思ったのです。 wcs系の関数程度なら自作してもしれています。 (C++11やC11ならchar16_tで統一してもよいですが、そこまでしなくてもよいでしょう) ちょっと面倒なのはwcscollとwcsxfrmぐらいですが、これらを使う機会はそう多くないはずです。

stosh666
質問者

お礼

おススメしてくれた通り、wcs系関数に代替する関数を一式作りました。ありがとうございます。 コーディングはラクだったのですが、こういうライブラリ系関数は、テストにとても苦労しますね。 ライブラリは汎用性が高い分、テストケースも膨れ上がるという。 返事がとても遅くなりすみません。しばらくログインできない状態になって... あのアカウント確認時のキャプチャ、画像が2つ出るけど、どうやって画像中の文字を記述したらよいのかわかりませんよね。w

関連するQ&A