gpt4 book ai didi

c++ - 编译器如何知道何时不重新编译?

转载 作者:太空狗 更新时间:2023-10-29 21:01:32 24 4
gpt4 key购买 nike

编译器如何知道何时不需要重新编译代码的某些部分,尤其是在较大的项目中?


例如,假设在 C++ 中我们有两个 C++ 文件和两个头文件。头文件相互依赖。 (他们使用彼此文件中指定的类。)

编译器是否总是需要解析两个头文件(可能还有用于方法实现的 C++ 文件)以获得类信息,以便生成两个 C++ 文件中的任何一个?


我一直认为,当您在命令提示符下运行编译器时,它会在输出目标文件后立即关闭 - 因此不可能缓存抽象语法树或中间代码。大多数 C++ 编译器是否知道某个文件何时不需要输出到目标文件并因此被跳过?

最佳答案

我所知道的所有编译器都会编译他们正在编译的每个源文件告诉。总是。他们生成了一个新版本的对象他们编译的每个源文件的文件。

只编译必要的是通常留给构建系统(make 或其他)。了解哪些对象需要重新生成取决于每个源文件包含的内容,直接或间接地;大多数编译器都有输出这个的选项某种格式的信息,可以是即时的,也可以是单独的调用和构建系统(至少是可用的)使用此信息来确定依赖关系。

关于c++ - 编译器如何知道何时不重新编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18058937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com