また、引数付きマクロ(#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' のみで表すことにして、
マクロの引数表現との衝突を避けるために '%' を用いる記法は削除したほうが
いいのではないかと思います。