#define の特殊展開マクロのバグ
Closed this issue · 1 comments
Deleted user commented
どうやら、repeat loop
間で呼び出されたスタックの呼び出し命令が無視されています。
コード例
#define ctype add(%1) %tstack %s1 mes "add " + %1
#define opt %tstack mes "opt " + %o
add("1")
add("2")
add("3")
add("4")
add("5")
repeat 5
opt
loop
エラーメッセージ
#HSP script preprocessor ver3.6beta3 / onion software 1997-2020(c)
#Use file [hspdef.as]
#Use file [dish_enhance.as]
#1 unresolved macro(s).[ss.hsp]
stack
#Fatal error reported.
onitama commented
#defineで定義される特殊展開マクロは、プリプロセッサ命令ですので実行時ではなくソーススクリプトのコンパイル時に解釈されます。提示された例で言えば、addと同じ数だけoptが書かれていなければなりません。
どのような処理を想定しているかにもよりますが、実行時にスタックしたり取り出したりする用途には使用できません。