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

问题描述 投票:0回答:1

我读到C语言中的注释在预处理时被替换为单个空格。在规格中

程序被分割成由空格字符分隔的标记; 评论是 替换为单个空格[添加强调]。然后遵守预处理指令,并使用宏 (A.12.3-A.12.10 段)已扩展。

这个选择背后有什么具体原因吗?

我看过这个例子

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

如果我们不将注释替换为单个空格,上面的内容将会引发错误。然而,以这种方式撰写评论似乎是一种不好的做法。是否还有其他原因可以解释为什么用单个空格替换注释而不是仅仅将其删除会有帮助?

c c-preprocessor
1个回答
4
投票
int a/* comment */b;

如果没有用空格替换,上面的代码将编译为

int ab;
。我认为这会比当前的规格更糟糕。

这样想,注释占用了很多空间,因此添加一个空格就可以了,而且比使用一些特殊标记更快,这意味着“我们从这里删除了注释”。

© www.soinside.com 2019 - 2024. All rights reserved.