oku (4610) の日記

2004 年 04 月 24 日
午後 11:18

gcc-3.4.0 enable multibyte chars patch 作れない

そもそも gcc-3.4.0 では mbchar が削られていました。 ./gcc/ChangeLog.10 によれば

2003-07-06 Neil Booth

* Makfile.in: Remove traces of mbchar.
* c-parse.in (MULTIBYTE_CHARS): Remove.
* config.in (MULTIBYTE_CHARS): Remove.
* configure: Remove --enable-mbchar.
* configure.in: Remove --enable-mbchar.
* mbchar.c, mbchar.h: Remove.
* system.h: Poison MULTIBYTE_CHARS.
* config/linux-aout.h (MULTIBYTE_CHARS): Remove.
* config/linux.h (MULTIBYTE_CHARS): Remove.
* config/svr4.h (MULTIBYTE_CHARS): Remove.
* config/sparc/linux.h (MULTIBYTE_CHARS): Remove.

との事ですので、「mbchar の動作をマトモにする」という patch はありえません (「mbchar を復活させる」patch ならアリかも知れない)。

まあ元をただせば、弊社の新人教育で使用している Solaris 7 用の開発環境として、Sun Studio やら何やらを購入するのが面倒なので、手近にある gcc で SJIS が通るように変更しよう、というのが開発動機なわけでして。 今の時点で SJIS を通す gcc-3.3.x 向け patch がある以上、あまり頑張る必要はないかな...というのが本音です。

2004-04-26 追記:

Anonymous Coward 氏からいただいた情報によれば、

C、C++、Objective-C コンパイラは、ホスト環境の C ライブラリがサポートするキャラクタエンコーディングのソースファイルを扱えるようになった。 デフォルトの入力キャラクタセットは現在のロケールが採用されるが、-finput-charset コマンドラインオプションで上書きできる。 将来は、インラインエンコーディングマーカーのサポートが追加されるだろう。

との事です。 まずは試してみましょう。

2004-04-26 更に追記:

gcc-3.4.0 では、やはり SJIS の puts("表"); が通らないようです。 gcc-3.4.0 で使用可能な charset 絡みのオプションは -finput-charset, -fexec-charset, -fwide-exec-charset, -ftarget-charset ですが、これらをどう組み合わせても「\」を含む SJIS リテラルは通せませんでした。

./gcc/cppcharset.c をきちんと解読していない段階なので、あまり断定的に言えないのですが。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Stableって古いって意味だっけ? -- Debian初級

処理中...