[Top Page][Edit][Article][Edit History][All Pages][Recent Changes][->Japanese]

Note:hsp2.61互換ソースとhsp3.x準拠ソースのまとめ

  • hsp2.61互換ソースとhsp3.x準拠ソースのまとめに戻る
  • hsp261cmp.asですが、一部の関数は互換を考慮されていないみたい。なぜ
    #undef int
    #define int(%1) %1=int@hsp(%1)
    
    とかしていないんだろう...一部だけっていうのがますます混乱させていると思う。
    • これすると #func/#cfunc/#deffunc/#defcfunc/#modfunc/#modinit/#comfunc などで問題になるからでは?同じキーワードを使うために仕様上、不可能になってしまった例ですね。
    • いや、あくまで以前は命令だったものが関数になったものを対象に命令形式の記述をサポートするためのものがhsp261cmp.asの役割だと思うので、「HSP3の機能全てを2.61互換に」というわけではないので#系コマンドは対象外...
      • あ!っていうかそういうことですか!引数の型に「int」「str」とかありましたねー、なるほど。納得です。
        • 実際にはそれが理由が対応していないのかどうかは分かりませんが、実質的に対応不可能な状態になっているということは間違いないです。本当は競合しちゃうのはまずいので、上記のような型指定の時は例外にするか型名を変更するか型名指定を文字列にするなど何らかの対策が必要だと思いますけどね。(型指定の場合はマクロ置き換えを自動で無効にするのがユーザー側の負担は一番少ない(=スクリプトを変更する必要ないので)ですが難しそうですね)プリプロセッサ命令の処理が他のプリプロセッサ命令の処理に影響してしまう問題ですね。上記の定義命令/定義関数関係のプリプロセッサ命令はプリプロセス処理後にも残り、コンパイラに渡されるんですよね。