(下手な英語でごめんなさい。)
次のようなマクロが必要MASK
です。
MASK(a)
に展開します(1<<(a))
MASK(a,b)
に展開します(1<<(a) | 1<<(b))
MASK(a,b,c)
に展開します(1<<(a) | 1<<(b) | 1<<(c))
- 等
Cプリプロセッサでそのようなマクロを定義することは可能ですか? 多分いくつかのGCC拡張機能を助けることができますか? または、 などに展開されるMASK(x)
ような単一の引数で実装することは可能ですか?MASK((a,b))
(1<<(a) | 1<<(b))
追加した。関数として実装することに興味はありませんMASK
。