我最近遇到了以下构造的情况
#if BYTE_ORDER == LITTLE_ENDIAN
do_something();
#endif
Run Code Online (Sandbox Code Playgroud)
导致'do_something()'被编译,如果既BYTE_ORDER没有LITTLE_ENDIAN定义也没有定义.虽然这不是不合理的行为,但我无法在gcc上找到任何选项在这种情况下给我一个警告.
如果没有警告,您可以进入相当令人担忧的情况,即有人可以删除一个明显未使用的标头,它将完全改变编译结果,因为它导致包含定义这两个宏的标头(并以不同方式定义它们).
c ×1