以下定义语句在C中是否有效?
#define TRUE FALSE
答案 0 :(得分:26)
您必须记住,预处理器宏只是被替换。如果你这样做。
#define TRUE FALSE
然后处理器只是替换它找到的所有地方TRUE
将被定义为FALSE
的任何内容替换。
所以确实这是一个很好的定义。是的,它很可能会以非常意想不到的方式改变程序工作流程,甚至可能导致未定义的行为。
答案 1 :(得分:4)
因为我们应该在定义TRUE
时定义FALSE
。
所以在这种情况下,这将是重新定义并且无效。
如果你留在实习生,#define TRUE FALSE
对标准有效,但根据我能想象的所有逻辑都无效。
但我经常看到的一种方式是:
#define FALSE 0
#define TRUE !FALSE