| open-mgl-dev (開発バージョン) (0.7.9.80) | 2009-11-02 22:25 |
| open-mgl (DirectX9, VC++2008) (0.7.9) | 2009-09-27 20:32 |
| roast-dev (開発バージョン) (0.0.1.40-dev) | 2009-11-02 23:09 |
プリプロセッサを活用して算術演算を行います。
宣言:
#define MSL_PP_INC(x)
xに指定された数値に+1(インクリメント)した値にマクロ展開を行います。
例:
int hoge ##MSL_PP_INC(5); hoge6 = 7;
xに指定可能な値は0~256の間です。
宣言:
#define MSL_PP_DEC(x)
xに指定された数値に-1(デクリメント)した値にマクロ展開を行います。
例:
int hoge ##MSL_PP_DEC(5); hoge4 = 3;
xに指定可能な値は0~256の間です。
宣言:
#define MSL_PP_ADD(x,y)
エイリアス: * MSL_PP_PLUS
xにyを加算した値にマクロ展開を行います。
例:
int hoge ##MSL_PP_ADD(3,4); hoge7 = 8;
xとyの合計が256を超える場合、このマクロ展開はエラーになります。
また、内部的にこの処理は、yに対しx回インクリメントを行う事により実現されているため、
x<yの場合である方がより効率的です。(なお、この効率はコンパイル時の話であるため、
実際の実行コードとしての影響はありません。)
宣言:
#define MSL_PP_SUB(x,y)
エイリアス: * MSL_PP_MINUS
xからyを減算した値にマクロ展開を行います。
例:
int hoge ##MSL_PP_ADD(8,5); hoge3 = 1;
x、yの値が256を超える場合、ないしx-yの結果が-1を下回る場合、このマクロ展開はエラーになります。
宣言:
#define MSL_PP_MUL(x,y)
xにyを乗算した値にマクロ展開を行います。
例:
int hoge ##MSL_PP_MUL(10,20); hoge200 = 400;
xとyの乗算結果が256を超える場合、このマクロ展開はエラーになります。
また、内部的にこの処理は、y+y+...+yをx回繰り返す事により実現されているため、
x<yの場合である方がより効率的です。(なお、この効率はコンパイル時の話であるため、
実際の実行コードとしての影響はありません。)
TODO: 分かり辛いのでx+x+...+xのy回の処理にした方がよさそう。