Recently, I came across a situation where the following construction
#if BYTE_ORDER == LITTLE_ENDIAN do_something(); #endif
compiles 'do_something ()' if neither BYTE_ORDER nor LITTLE_ENDIAN . Although this is not unreasonable behavior, I cannot find any option on gcc to warn me in this situation.
Without warning, you may encounter a rather alarming situation where someone can delete an obviously unused header and it will completely change the compilation result because it included a header that defined these two macros (and defined them differently).
source share