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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0918
ソラカッコを省略してもエラーにならない。7解決


ソラ

リンク

2017/9/18(Mon) 21:15:37|NO.81381

たまたま見つけたのですが、
以下のようなコードが問題なく実行できてしまいます。
本来は「カッコが閉じられていません」になるのではないでしょうか?

#define ctype test(%1) %1 mes test(10

バージョンは3.5βです。



この記事に返信する


inovia

リンク

2017/9/18(Mon) 21:18:53|NO.81382

この手のは前からあるような…?


mes "test

マクロじゃないけど、
ダブルクォートも後ろがなくても動いてしまう。



ソラ

リンク

2017/9/18(Mon) 22:05:43|NO.81385

あらほんと・・・
特別不都合がないのでこのまま、って感じなんですかね。



掘木

リンク

2017/9/18(Mon) 23:20:37|NO.81392

>本来は「カッコが閉じられていません」になるのではないでしょうか?

どうでしょうね。そのシンタックスチェックはプリプロセスが行うものなので、
そのコンパイルエラーメッセージでない、別のエラーメッセージが出るべきかと思います。

実際の動作(OpenHSP上)は、それに由来するシンタックスチェックコードが存在していません。

CToken.cpp内のReplaceLineBufにて、 マクロの引数が多すぎることへのエラーがある付近でチェックすると思われますが、 正常に閉じられているか(kakko==0)の判定がありません。
他のなぜか通るコードと組み合わせたハックを考えたがこちらの知識じゃ無理そう。
出来たとしても得がないのしか浮かばなそう。



科学太郎

リンク

2017/9/20(Wed) 11:58:46|NO.81411

> たまたま見つけたのですが、
こちらも、たまたま見つけたもので

s="$82A0=あ" n=int(s) mes strf("0x%04X",n)
これを実行すると「0x82A0000」となります。
無効な文字を「0」という形で変換を続行してますね。

C/C++言語、API関数とは違ってます。
HSPの語句解析が不完全なのでしょうね。



ソラ

リンク

2017/9/20(Wed) 13:29:30|NO.81415

意外とこういう不具合ってあるんですね。
通常の使い方で問題になることは無いでしょうが、
留意しておきます。
皆さんありがとうございました。



掘木

リンク

2017/9/20(Wed) 20:30:01|NO.81419

妙な動作は大量にあるけども、こちらが知っているのは氷山の一角でしょうね。

http://hsp.tv/play/pforum.php?mode=pastwch&num=76787
去年見つけた妙な挙動、実装のスレッド。参考になれば。



 

リンク

2017/9/30(Sat) 16:28:16|NO.81520

括弧を閉じなくても動くのはバグだと思うけど、引用符の終わりが要らないのは仕様だと思う。
HSP って BASIC 寄りだし、BASIC に似せたのではないかな。



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