gpt4 book ai didi

c++ - C 预处理器中是否存在逻辑短路?

转载 作者:IT老高 更新时间:2023-10-28 12:47:41 28 4
gpt4 key购买 nike

gcc docs for cpp解释一下 #if 指令:

[...] and logical operations (&& and ||). The latter two obey the usual short-circuiting rules of standard C.

这是什么意思?预处理的时候没有表达式的求值,怎么会短路呢?

最佳答案

很简单:未定义的宏的数值为零,除以零是非法的。

#if FIXEDSIZE && CHUNKSIZE/FIXEDSIZE > 42
#define USE_CELLPOOL
#endif

#if 确实将其行的其余部分评估为整数常量表达式。您的链接文档开始:

The ‘#if’ directive allows you to test the value of an arithmetic expression, rather than the mere existence of one macro.

这不是 gcc 扩展,#if 的标准语法是

#ifconstant-expression new-line groupopt.

C99 预处理器将所有常量视为 [u]intmax_t

关于c++ - C 预处理器中是否存在逻辑短路?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24037595/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com