为什么预处理器用单个空格替换注释,而不是在C语言中删除它们



我读到C语言中的注释在预处理时被单个空格取代。在规范中

程序被拆分为用空格字符分隔的令牌评论替换为单个空格[增加强调]。然后遵守预处理指令,并且宏(第A.12.3-A.12.10段(。

这一选择背后有具体原因吗?

我看过这个例子

#include <stdio.h>
int/*This is a comment*/main(){
return 0;
}

如果我们不将注释替换为一个空格,那么上面的内容就会出现错误。然而,以这种方式写评论似乎是一种不好的做法。用一个空格代替注释,而不仅仅是对其进行条带化,还有其他原因吗?

int a/* comment */b;

如果它没有被一个空格取代,上面的代码将编译为int ab;。我认为这会比目前的规格更糟糕。

最新更新