HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1201
undefined#deffuncで引数にlabel型を使いたいのですが3解決


undefined

リンク

2009/12/1(Tue) 21:41:27|NO.29101

#deffuncで定義した命令の引数にlabel型を使いたいのですが、

#module #deffunc test label sub return #global test *subroutine stop *subroutine return

これを実行すると「モジュール変数の指定が無効です。」という実行時エラーが出ます。
何かコードに問題はありますか?あれば教えてください。お願いします。

因みにHSP3.2aです。



この記事に返信する


足利超神

リンク

2009/12/1(Tue) 23:06:41|NO.29104

まず「label」はラベル型ではありません。
ためしにlabel=1と打てばわかります。
ラベルはstr型で処理しましょう。

次にモジュール内でgotoを使うと言うことは
"そのモジュール内の"ラベルに飛びます。

#module #deffunc test str sub gosub sub return #global test "*subroutine" stop *subroutine return
としても*subroutineへ飛ぶことはありません。



レノス

リンク

2009/12/1(Tue) 23:25:59|NO.29107

できません。
「label」の引数は、なぜだか知りませんが、実装されていません。

一旦ラベル型の変数にラベルを代入して、それを var 引数で命令に渡す、という方法が主流です。


// サンプル #module // マクロ。受け取った引数を _label_arg に代入してから、命令を呼ぶ。 #define global jump(%1) \ _label_arg = %1 : jump_dummy _label_arg // 命令の実体。jump_dummy は仮の名前。lb は label の略ということで。 #deffunc jump_dummy var lb gosub lb return #global jump *TestRoutine stop *TestRoutine mes "TestRoutineに来たよ!" return



undefined

リンク

2009/12/2(Wed) 18:29:24|NO.29113

そうだったんですか。参考になりました。ありがとうございます



ONION software Copyright 1997-2023(c) All rights reserved.