为什么c的stdbool.h包含#define false false

安东尼·瓦莱·杜波依斯

在被编译器错误指出之后,我注意到clang的stdbool.h文件包括(其中包括)以下几行:

#define bool  bool
#define false false
#define true  true

它们包含在一个间接#ifdef强制执行块中__cplusplus,因此,即使stdbool.h是C标头,c ++标记也是如此

这些定义有什么需要?我想出于某些与预处理器相关的原因而需要它们,但我想知道标准的哪一部分或哪个技术原因使之成为标准,因此clang必须包括这些内容。

Nonneneo

stdbool.h是一个C标头,而不是C ++标头。它通常在C ++程序中找不到,因为truefalse在C ++中已经是关键字。

因此,如果包含C ++程序stdbool.h,则很明显地表明它是移植的C程序(例如,被编译为C ++的C程序)。在这种情况下,stdbool.h根据来自GCCstdbool.h的注释,G ++在C ++模式下作为GNU扩展支持

/* Supporting <stdbool.h> in C++ is a GCC extension.  */
#define _Bool        bool
#define bool        bool
#define false        false
#define true        true

...

/* Signal that all the definitions are present.  */
#define __bool_true_false_are_defined        1

同样,Clangstdbool.h在C ++中支持与G ++的兼容性。在此故意定义这些值以匹配内置C ++类型,而不是传统的C99定义。它们被定义为宏,以提供与C99标准的某些兼容性,该标准要求:

标题应当载明下列booltruefalse__bool_true_false_are_defined

应用程序可能会取消定义,然后可能会重新定义宏bool,true和false。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么false ==“ false”是false?

来自分类Dev

为什么包含值返回false?

来自分类Dev

为什么indexOnly == false

来自分类Dev

为什么“ True or False”比“ False或True”要快?

来自分类Dev

为什么“ False is False is False”评估为“ True”?

来自分类Dev

为什么{} == false评估为false,而[] == false评估为true?

来自分类Dev

为什么[False]中的False == False会返回True?

来自分类Dev

为什么false &&(false)?false:true返回true

来自分类Dev

为什么$ .isnumeric为false

来自分类Dev

为什么HasNext()返回false?

来自分类Dev

为什么仍然返回false?

来自分类Dev

为什么函数返回false?

来自分类Dev

为什么HasNext()返回false?

来自分类Dev

为什么这会返回False

来自分类Dev

为什么(false == 0)是TRUE?

来自分类Dev

ImmutableHashSet。包含返回false

来自分类Dev

更新h:outputText的Escape =“ false”和值,其中包含'\ u001c'

来自分类Dev

Objective-C TRUE / FALSE与true / false

来自分类Dev

(true + false)> 2 + true; 为什么返回false?

来自分类Dev

NaN虚假吗?为什么NaN === false返回false

来自分类Dev

为什么(null == false)和(null == true)都返回false?

来自分类Dev

为什么(false和false或true)返回true

来自分类Dev

为什么在Python中'[] == False'的答案为False?

来自分类Dev

为什么 (true || false && false) 评估为 true?

来自分类Dev

为什么在C ++ / CLI中String :: IsNullOrEmpty()返回false?

来自分类Dev

FALSE和TRUE的奇怪定义,为什么?

来自分类Dev

为什么WeakReference.IsAlive变为false?

来自分类Dev

为什么isDrawerVisible总是显示为false

来自分类Dev

为什么AVPlayerItem的canPlayFastForward方法返回False?

Related 相关文章

热门标签

归档