铛具有以下测试案例:#else 1只是一个警告?
#if 0
#ifdef D
#else 1 // Should not warn due to C99 6.10p4
#endif
#endif
#if 0
#else 1 // expected-warning {{extra tokens}}
#endif
第一#else 1
确实是好的,因为它是在跳过的组,但据我可以看到第二个应该是一个错误 - 它不匹配该标准指定为预处理器指令的语法 - 但GCC和Microsoft C++同意仅给出警告。我错过了什么?
微软的C/C++编译器是众所周知的,因为根据标准,许多这不完全正确。我想你必须忍受它,或者切换到更严格的编译器。 – Lindydancer