在c中的程序开发过程中删除注释的位置

时间:2013-08-05 04:37:34

标签: c++ c linux comments

我在程序中添加了评论。

在开发期间,它将被删除,如编译,链接,加载。

6 个答案:

答案 0 :(得分:7)

指定在翻译的第3阶段(§:2.2 / 1)发生:

  

3 - 源文件被分解为预处理标记(2.5)和空白字符序列(包括注释)。源文件不应以部分预处理标记或部分注释结束。 每个评论都会被一个空格字符替换。

[强调补充]

答案 1 :(得分:6)

从字面上看,它们在扫描(词法分析)后被忽略。

以前,我被以下事实所迷惑:如果您启用了调试符号生成,并且源仍然存在,您可以在gdbobjdump中看到它们:

00000000004004ec <main>:
int main()
{
  4004ec:   55                      push   %rbp
  4004ed:   48 89 e5                mov    %rsp,%rbp
    /* This is just a comment */
    return 0;
  4004f0:   b8 00 00 00 00          mov    $0x0,%eax
}
  4004f5:   5d                      pop    %rbp
  4004f6:   c3                      retq   
  4004f7:   66 0f 1f 84 00 00 00    nopw   0x0(%rax,%rax,1)
  4004fe:   00 00 

来自代码

int main()
{
    /* This is just a comment */
    return 0;
}

使用gcc -g -O0 1.c编译并通过objdump -CDgS a.out获得。这是因为这些工具在找到它时会读取源文件,并通过行号将二进制文件中找到的调试信息与源文件的内容相关联。

答案 2 :(得分:2)

在预编译(词法分析阶段)期间删除它们,就像生成中间代码时那样,不需要注释。

答案 3 :(得分:0)

编译过程的词法分析阶段会删除程序中的注释。词法分析也称为扫描。

答案 4 :(得分:0)

编译过程的词法分析部分会忽略输入字符串中的注释。

如果您想将程序注释用于任何目的,则必须编写自己的解析器。

答案 5 :(得分:0)

说删除评论是不正确的。 最好是在编译期间解析器跳过注释。

Parser是一个程序,它开始读取用英语编写的C代码并将其转换为汇编代码。解析器程序只读取您用英语编写的代码,并跳过以“/ *”或“//”开头的句子。

因此,注释不会被删除,它们存在于您的C代码中,但被编译器跳过以创建汇编文件。