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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0520
naznyark最適化処理に伴う事象。No.778の検証。0解決


naznyark

リンク

2006/5/20(Sat) 01:34:26|NO.779

No.778の書き込みにのっていたスクリプトの動作についての検証。
そのスクリプト。

#module "test1" ; エラー対策? #deffunc b return *test mes "test@test1" return #global #module "test2" #deffunc a gosub *test@test1 return #global a b ; なぜか呼び出さないとエラーになる stop
HSP3.1b2以降ではコンパイル時の最適化処理により
その内部で定義されている命令・関数が
一度も呼び出されることの無いモジュールは
コンパイルされなくなったようです。

上記のスクリプトの場合どこかで命令 b を呼び出さないと
test1 モジュールの部分はコンパイルされません。
よってその内部のラベル *test@test1 は存在しないものと
みなされコンパイル時にエラーが出ます。
(コンパイラが b を呼び出していると認識すればよいので
実際に b の呼び出しを実行する必要はありません。
上記のスクリプトなら stop のあと b を呼び出すように
書き換えても動作します。)

#cmpopt optcode 0 で最適化をやめれば
命令 b の定義、および呼び出しを行わなくても
エラーは出なくなります・・・。



この記事に返信する


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