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