アカウント名:
パスワード:
脱線気味ですが。某B社のPascal言語環境で、コンパイルしたアプリが処理が正常に行われなかったり、オーバーフローしたりしたことが・・・。diffでソースの差分をみても特に異常があるわけでもない。そして、いろいろ試行錯誤しているうちに、動作とはまったく関係ない「はず」のコメント行を削ってみたら正常に動作したことが。あの会社の開発環境は信じられなくなりました。
他の方も仰っている通り、某B社のT**** Pascalでは、中括弧でくくるタイプのコメント中に日本語は御法度でした。Pascalのコメントには
{ comment }
と
(* comment *)
の2つの形式がありますけど、前者のコメント中で第2バイトに$7D('}')が来る文字(シフトJISでは全角カタカナの'マ'とか)を使用すると、コンパイラはそこでコメントが終わったものと解釈してしまいます。そこから後のコメントが偶然コンパイルが通ってしまう内容だったりすると、動作に影響を与えることもありそうです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
192.168.0.1は、私が使っている IPアドレスですので勝手に使わないでください --- ある通りすがり
コメント行を削除すると解決!? (スコア:1, 興味深い)
脱線気味ですが。
某B社のPascal言語環境で、コンパイルしたアプリが処理が正常に行われなかったり、オーバーフローしたりしたことが・・・。
diffでソースの差分をみても特に異常があるわけでもない。
そして、いろいろ試行錯誤しているうちに、動作とはまったく関係ない「はず」のコメント行を削ってみたら正常に動作したことが。
あの会社の開発環境は信じられなくなりました。
Re:コメント行を削除すると解決!? (スコア:2, 参考になる)
他の方も仰っている通り、某B社のT**** Pascalでは、中括弧でくくるタイプのコメント中に日本語は御法度でした。
Pascalのコメントには
と
の2つの形式がありますけど、前者のコメント中で第2バイトに$7D('}')が来る文字(シフトJISでは全角カタカナの'マ'とか)を使用すると、コンパイラはそこでコメントが終わったものと解釈してしまいます。
そこから後のコメントが偶然コンパイルが通ってしまう内容だったりすると、動作に影響を与えることもありそうです。
Re: (スコア:0)
// どの文字が危険だったか覚えて無いけど
foo();
のタイプのコメントで、コメントの末尾が2バイト目が\の文字の場合に改行がエスケープされちゃって
// どの文字が危険だったか覚えて無いけ?■foo();
みたいに行末が潰れつつ1行扱いにされてしまうというのが。
その文字コードにする必要があったけど、コンパイラの方はどうしようもなさそうで、 その文字コードを正しく扱えるgrepか何かを探してきて、事前にすべての行末にスペースを追加してからコンパイルするようにmakeを書き換えたんだったか。
もちろん、後日、"\を含む文字が入ってる文字列"がコード中に出てきて破綻しましたが。