テスト前は#defineはコンパイル前のコードの置換というイメージだったので
こういった書き方も大丈夫だろうと思っていました…
自分的にはありかと思うんですが統一していないと混乱の元になりそうですね。
事の発端はラベルの代入・参照の際、同じ文字列をなるべく何度も打たなくてもいい方法はないかと
↓のような書き方を考えていたことです。
#define ctype setRoutine(%1,%2) rt_init(%1)=*init%2: rt_update(%1)=*update%2: rt_draw(%1)=*draw%2
#define ctype rtInit(%1) %troutine %s1 *init%p
#define rtUpdate %troutine return : *update%p
#define rtDraw %troutine return : *draw%p
#define rtEnd %troutine return : %o0
setRoutine(0,Enemy00) ;本当は setRoutine 0, Enemy00 という風に命令形で書きたかった
setRoutine(1,Enemy01)
setRoutine(2,Enemy02)
;...
num = length(rt_init)
repeat num : gosub rt_init(cnt) : loop
*mainLoop
repeat num : gosub rt_update(cnt) : loop
redraw 0
repeat num : gosub rt_draw(cnt) : loop
redraw 1
await 15
goto *mainLoop
rtInit(Enemy00)
; 初期処理
rtUpdate
; 更新処理
rtDraw
; 描画処理
rtEnd
rtInit(Enemy01)
;
rtUpdate
;
rtDraw
;
rtEnd
rtInit(Enemy02)
;
rtUpdate
;
rtDraw
;
rtEnd
;...
switchだとcaseが増えると比較処理もそれなりに無視できなくなりそうなので
ラベルで直接ジャンプするようにしているのですが、
素直に switch,case で書いた方が良い気もしています…