我在程序中添加了评论。
在开发期间,它将被删除,如编译,链接,加载。
答案 0 :(得分:7)
指定在翻译的第3阶段(§:2.2 / 1)发生:
3 - 源文件被分解为预处理标记(2.5)和空白字符序列(包括注释)。源文件不应以部分预处理标记或部分注释结束。 每个评论都会被一个空格字符替换。
[强调补充]
答案 1 :(得分:6)
从字面上看,它们在扫描(词法分析)后被忽略。
以前,我被以下事实所迷惑:如果您启用了调试符号生成,并且源仍然存在,您可以在gdb
或objdump
中看到它们:
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代码中,但被编译器跳过以创建汇编文件。