#if 0之后你究竟能放到什么?

rwa*_*ace 8 c c++ c-preprocessor

根据用C语言标准,之间的界线#if 0#endif只需要包含预处理标记,所以大多数种完全语法错误例如#foo#include [bar]允许(自动忽略); GCC和Microsoft C++确实默默地忽略了这一点.

一个@没有,据我可以看到对应于任何预处理标记所以应该还算是一个语法错误.GCC和Microsoft C++默默地忽略它.这实际上是语言扩展还是我遗漏了什么?

有没有人真正使用这种能力在实践之间#if 0#endif实践中使用格式错误的语法?

Bar*_*nau 13

C和C++标准在它们的语法中都包含一个特殊的"转义子句",它使得每个非空白字符都是预处理令牌(的一部分).出于这个原因,无论你在块之间放置什么#if 0,#endif几乎都不会导致编译错误.唯一的例外是字符和字符串文字的引号不匹配.

是的,我经常在语法之间放置格式错误的语法#if 0#endif禁用一些部分编写的代码.