注释会被翻译成机器代码吗?C++



当一个用C++编写的程序有注释时,这些注释是翻译成机器语言还是永远不会走那么远? 如果我编写了一个C++程序,在两个命令之间有整本书的注释,我的程序是否需要更长的时间来编译或运行得更慢?

注释通常在预处理期间被去除,因此编译器本身根本不会看到它们。

不过,他们可以(并且通常确实)稍微减慢编译速度 - 预处理器必须通读整个注释才能找到其结尾(因此后续代码将传递给编译器。除非您包含真正庞大的注释(例如兆字节),否则差异可能不会很明显。

虽然我从未见过(或听说过)一个 C 或 C++ 编译器这样做,但已经有编译器(例如,对于 Pascal)使用特殊格式的注释将指令传递给编译器。例如,Turbo Pascal 允许(其后继者可能仍然允许)用户在注释中使用编译器指令打开和关闭范围检查。在这种情况下,注释没有(至少在我知道的情况下)生成任何机器代码本身,但它可以并且确实影响了为注释之外的代码生成的机器代码。

不,编译器只是忽略了它们。评论的唯一目的是人类阅读,而不是机器。

预处理器消除了注释。编译器为什么要阅读它们?它们的存在是为了让人们更容易理解代码。你没听过"很难成为评论,你总是被忽视"的笑话吗:p

第三翻译阶段

  • 源文件分解为注释、空格字符序列(空格、水平制表符、换行符、垂直制表符和表单馈送)以及预处理标记。

  • 每个注释都替换为一个空格字符。

有关翻译阶段的更多信息,请参阅此 cpprefference 文章

不,它们被preprocessor删除。您可以使用 cpp: The C Preprocessor 进行检查。只需编写一个简单的带有注释的C程序,然后使用cpp comment.c | grep "your comment"

最新更新