我有一个只是一个常数值的宏:
#define THREAD_AT_DEPTH 13
如果我将该值设置为偶数,我想在编译时抛出一个错误。
#if (THREAD_AT_DEPTH % 2) == 0
#error THREAD_AT_DEPTH must be odd
#endif
不幸的是,THREAD_AT_DEPTH % 2
未在编译时进行评估,#error
始终有效。如果我将THREAD_AT_DEPTH
更改为13
,我的#if
指令会按预期工作。
有没有办法让定义的宏正确评估?
编辑:这个问题与我的代码不符。以上工作如预期。我没有意识到无效的代码正在使用
const int THREAD_AT_DEPTH = 13;
//...
#if (THREAD_AT_DEPTH % 2) == 1
//...
当我将其更改为
时#define THREAD_AT_DEPTH 13
我的#if
指令按预期工作。
现在,我不确定是否应该在此留下此问题或删除它。