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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0812
reinterpret_cast2進数表現の改善要望5解決


reinterpret_cast

リンク

2016/8/12(Fri) 20:52:26|NO.76602

HSP3では、先頭に '0b' または '%' を付けることによって2進数を表現できます。
また、引数付きマクロ(#define ctype)の引数は%1, %2, ..., %nで表現します。
つまり、2進数表現と引数付きマクロとで表現の重複が起こっているので、
この2つを組み合わせた以下のようなコードはエラーになります:


#define ctype setflag(%1) (%1 | %100) #define ctype setflag2(%1) (%1 | 0b100) mes setflag(10) // error mes setflag2(10) // it compiles

エラーメッセージ:

#HSP script preprocessor ver3.4 / onion software 1997-2014(c) #Use file [hspdef.as] #Error:illegal macro parameter in line x [???] #Fatal error reported.

そこで、C++14の2進数リテラルのように、2進数は '0b' のみで表すことにして、
マクロの引数表現との衝突を避けるために '%' を用いる記法は削除したほうが
いいのではないかと思います。



この記事に返信する


static_cast

リンク

2016/8/12(Fri) 22:43:09|NO.76603

う〜ん マクロでいえばこんな問題はいくらでも起こるし、互換性とか意識したら尚さんで欲しい。

c++ みたいなクソ言語に HSP はならないでほしい



tomato

リンク

2016/8/12(Fri) 22:45:01|NO.76604

%%とすれば、%に置き換わるんですが、
それじゃダメなの?


#define ctype setflag(%1) (%1 | %%100) #define ctype setflag2(%1) (%1 | 0b100) mes setflag(10) // error mes setflag2(10) // it compiles



boost::lexical_cast

リンク

2016/8/12(Fri) 23:25:43|NO.76605

C言語のprintf()みたいに%%にすればいいんですね! 有難うございます
ところで、'%%とすれば、%に置き換わる' というのは、HSPの公式ドキュメントの
どこに書かれているのか教えて頂けませんか



tomato

リンク

2016/8/13(Sat) 09:00:43|NO.76607

軽く探してみたけど、なさそうですね。
数年前の投稿をみて、初めて知った感じです。
http://hsp.tv/play/pforum.php?mode=pastwch&num=41006



boost::lexical_cast

リンク

2016/8/13(Sat) 16:42:33|NO.76610

わざわざ有難うございます



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