在我正在处理的某些代码中,我遇到了奇怪的真假重新定义。我以前见过这样的东西,是为了使检查更加严格/确切,但在我看来,这个有点奇怪,我想知道是否有人能告诉我这种定义的好处是什么,下面是我的注释:
#define FALSE (1 != 1) // why not just define it as "false" or "0"?
#define TRUE (!FALSE) // why not just define it as "true" or "1"?
这个代码库中还有很多其他奇怪的异常情况。比如所有标准类型都有重新定义:
#define myUInt32 unsigned integer // why not just use uint32_t from stdint?
所有这些小“怪癖”让我觉得好像我错过了一些显而易见的东西,但实际上我真的看不到重点 :(
注意:严格来说这是C++代码,但它可能已从一个“C”项目移植过来。
0
不同,如果编译器支持布尔类型,则1!=1
具有正确的类型。 - Benjamin Bannier