我听过多次提到自己定义这些宏是一个坏主意,但我不明白为什么.显然,'false'和'true'是C++标准的一部分,'FALSE'和'TRUE'不是标准的一部分.
但是,'FALSE'和'TRUE'被定义为windows.h中的宏,我已经习惯了它,并且实际上更喜欢它们,因为它们提醒我,在剥离任何抽象之后,布尔值被简单地评估为位级的整数.无论如何,这是个人偏好,但我想知道如果我想在我的程序中定义自己的宏真的是一个坏主意吗?任何有说服力的理由为什么不应该这样做?
我在Stack Overflow上看到的一个答案是,该人已经看到心怀不满的员工通过代码并插入如下内容:
#define FALSE 1
Run Code Online (Sandbox Code Playgroud)
但除了极其遥远和愚蠢的东西之外,还有什么好的理由不去吗?
编辑:谢谢你的回答.我理解并同意的理由是:(来自Ulrich Eckhardt)
(来自Paul Evans)
谢谢.
一堆原因:
FALSE需要再输入一次按键false.int const FALSE = 1; 没有宏观副作用会达到同样的效果.true和false每个人都知道.bool不是int.