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

根据C语言标准,#if 0和#endif之间的行仅需要包含预处理标记,因此大多数类型的完全格式错误的语法,例如允许#foo或#include [bar](默默忽略); GCC和Microsoft C确实默默地忽略了这一点.

@尽管我没有看到对应于任何预处理令牌,所以仍然应该是语法错误. GCC和Microsoft C默默地忽略它.这实际上是语言扩展还是我遗漏了什么?

有没有人实际上在实践中使用在#if 0和#endif之间放置格式错误的语法的能力?

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

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

翻译自:https://stackoverflow.com/questions/14194713/what-exactly-can-you-put-after-if-0

转载注明原文:c – 在#if 0之后你究竟能放到什么?