预处理器宏“#define TRUE FALSE”是否有效?

时间:2013-09-19 12:08:08

标签: c c-preprocessor

以下定义语句在C中是否有效?

#define TRUE FALSE

2 个答案:

答案 0 :(得分:26)

您必须记住,预处理器宏只是被替换。如果你这样做。

#define TRUE FALSE

然后处理器只是替换它找到的所有地方TRUE将被定义为FALSE的任何内容替换。

所以确实这是一个很好的定义。是的,它很可能会以非常意想不到的方式改变程序工作流程,甚至可能导致未定义的行为。

答案 1 :(得分:4)

因为我们应该在定义TRUE时定义FALSE。 所以在这种情况下,这将是重新定义并且无效。 如果你留在实习生,#define TRUE FALSE对标准有效,但根据我能想象的所有逻辑都无效。

但我经常看到的一种方式是:

#define FALSE 0
#define TRUE !FALSE