我在尝试使用条件汇编时获得以下错误:注意:请注意,一个,两个和三个是预处理定义的符号
- 为((定义(一个((添加了其他支架,并且可能是两个和三个
- 尝试将一个#else块与仅a(一起包含一个#else块,然后将附加块放在#if(sum(下的语句末尾
#if (defined(ONE) && !defined(TWO)
#if (SUM)
&& !defined(THREE)
#endif
)
some_statements_1
#else
some_statements_2
#endif /* #if (defined(ONE) && !defined(TWO) */
我希望只有定义ONE
的TWO
,并且未定义some_statements_1
,并且案例1:如果SUM
设置> 0,则不应定义THREE
案例2:如果将SUM
设置为0,则像往常一样(无检查THREE
(
实际结果是:
Pe018: expected a ")" at line 1 and
error: Pe169: expected a declaration at line 3
在处理前条件线上的表达式需要独立。您不能将#if
放在预处理器表达式中间。
尝试:
#if defined(ONE) && !defined(TWO) && !((SUM) && defined(THREE))
some_statements_1
#else
some_statements_2
#endif
我假设SUM
是一个宏,它扩展到适用于预处理器评估的整数常数。
(编辑:是#if defined(ONE) && !defined(TWO) && (!(SUM) || defined(THREE))
if(定义(一个(&&!定义(两个(
在上述语句中,您错过了一个闭幕式。请添加