【发布时间】:2017-06-03 23:17:04
【问题描述】:
我需要一个可以在编译时评估的宏,例如:
#define FIND_RANGE(x) \
if x>16 \
32 \
elif x>8 \
16 \
elif x>4 \
8 \
elif x>2 \
4 \
elif x>1 \
2 \
else \
1 \
endif \
所以代码
#define S1 FIND_RANGE(7)
unsinged int i = S1;
将作为
发送到编译器unsinged int i = 8;
能否完成这个简单的算法,以便在编译时对其进行评估?
【问题讨论】:
-
AFAIK 你不能在标准 C 或 C++ 中做到这一点,但 gcc 的预处理器有 this,也许这可以帮助:
-
(x > 16 ? 32 : x > 8 ? 16 : x > 4 ? 8等 -
@M.M 这行得通,非常感谢。
标签: c c-preprocessor