>>107
2のべき乗(2^n)限定なら
#define POW_2(n) (1 << n)

任意のべき乗(x^y)なら
#include <boost/preprocessor/repetition/repeat.hpp>
#define _TIMES_X(z,y,x) * (x)
#define POW(x,y) (1 BOOST_PP_REPEAT(y, _TIMES_X, x))

ネットで見つけたコードをちょっといじった
yは256以下の定数に限られる
Cでも通ります