浏览C99标准的n869草案时,我偶然发现了这个部分:
所以,我写了这个程序来测试它:6.10.7 Null directive Semantics
A preprocessing directive of the form
# new-line
has no effect.
#
#include <stdio.h>
#
int main(void)
{
puts("Hello, world!");
return 0;
}
果然,gcc
对这段代码没有任何意见,即使我开启了所有警告。我意识到语言中还有其他一些不明显的结构,比如初始化器、枚举定义等允许使用额外逗号的情况,但这是有用的(例如简化代码生成器的编写)。
然而,我不明白这个结构有什么用处。有人能想到一个合理的用例或理由吗?
cpp
实用程序对文件进行多次遍历,例如用于代码生成,它可以用于将第一遍的注释与应出现在生成的代码中的注释分开。有一个-C
标志要求cpp
保留注释,但是这些空指令行上的注释仍然被丢弃。 - FatalError