compilation - 编译器设计预处理和编译
问题描述
这里写道,预处理器的众多工作之一是:
包含头文件。这些是可以替换到您的程序中的声明文件。
头文件中的内容在我们的代码中使用之前是否经过词法分析器、语法分析器或语义分析器?如果不是,编译器如何在报告“程序员编写的代码”中的错误之前报告头文件中的任何错误?
解决方案
不,预处理器只是将包含的文件插入到您的代码中,然后对生成的“大 blob”进行词法分析等。
实际上,预处理器可能不会创建整个“大 blob”,它只是对其进行词法分析以创建可以馈送到编译后期阶段的标记流。
大多数编译器将让您生成“大 blob”(gcc 使用 -E 选项) - 这将创建一个包含所有代码和所有包含代码的文件,以及可能一些额外的“cpp 添加”标记,如原始文件中的行号等帮助报告错误。
包含文件中的错误首先出现的原因是编译器首先遇到它们。
推荐阅读
- elasticsearch - 在elasticsearch中更改json实体,是否允许?
- php - 展开 Laravel 6 登录表单
- python - 不同项目中的python通用枚举
- jquery - 选择下拉列表时从行中获取相应的单元格值
- .htaccess - 在 .htacces 中重写规则
- visual-studio - 忽略 Visual Studio SQL 架构比较中的依赖项
- c# - 如何通过 API Web 函数传递数据
- python - 访问一个字节中的半字节,将其附加到前一个字节然后评估它?
- html - 如何在后台从nodejs服务器加载api数据并将它们附加到数据表
- python - 有没有办法在 python 的 pdf.cell() 文本字符串中分配一个变量