Takashi Nakamoto wrote:
> i36782 にあるToraさんの報告:
>
> Japanese Microsoft Visual Stduio .NET comiplers misinterpret ...
>
> という記述を見る限りは「日本語版」のコンパイラのみの問題ということなん
> でしょうが、頻発するようであればなんらかの処置があった方がよいでしょう
> ね。
私は、米国在住中に個人的に購入した英語版の同コンパイラを使っているので、
実は今回問題となっているようなエラーを見たことが無いのです。ごめんなさい。
# 日本においても、amazon.com などで英語版を購入できるよ。
上記 i36782 の登録においては、
#pragma setlocale("japanese")
という文をわざと追加し、当該のエラーを発生させてみたりしたわけです。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vclib/html/_CRT_Language_Strings.asp
韓国語版や中国語版の同コンパイラにおいても、同じような問題が発生している
のかもしれません。が、私は実際のところは知りませんです。
> 例えば、ビルド対するシステム要件のところに、「ローカライズされたコンパイ
> ラの場合はコンパイルできないかもしれない」という簡単な記述を追加してお
> くとか、あるいはマルチバイト文字を含むソースコードには必ず #pragma...
> を書くというコーディング規約を作るとか。
そうですね。コーディング既約を作るといいのかもしれませんです。
ところで今回問題となっているのは「マルチバイト文字」ではありませんです。
1バイトの文字です。
Character set ISO-8859-1 の 0x80 から 0xff に配置されている、ドイツ語の
a, u, o の上にウムラウト(点々が2つ横並びで付くやつ)が付く文字などです。
その文字コードをシフトJISで解釈すると、シフトJISの文字コードの1バイト目
として誤って解釈してしまうため、続く次の1バイトを巻き込んで数々の問題が
発生してしまうようです。
ここで特に問題となるとは、次の1バイトが、例えば文字列を閉じる半角の " や
改行文字だったりすると、日本語版の同コンパイラは、その半角文字を直前の
1バイトの組として捉えてしまい、その結果その文字本来の意味か無くなって
しまい、文字列が閉じていない、とか、コメント文をコメントではなく本文とみな
してしまったり、するわけです。そして結果的にコンパイル時点において文法エラー
として解釈されてしまったりするわけです。
ちゃんちゃん
Tora
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]