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禁用一些部分编写的代码.