4

我最近注意到,在编译大型项目时(我一直在使用 Audacity 源代码),更改许多其他文件引用的文件,比如说在几十个其他文件中引用的工具栏小部件,会导致编译需要很长时间。如果您需要调整或调试这样的文件,则可能需要几分钟或更长时间才能完成每个编译周期。

如果您在引用工具栏的文件中使用指针,编译器是否仍需要重新编译每个包含对该类的引用的文件?

如果没有,它还会按设计编译这些文件吗?

在任何现有的语言或框架中,是否可以有一个指向类的原型而不是实例的指针?

4

2 回答 2

4

好吧,如果您更改界面,那么您无能为力;东西必须重新编译。但是,如果代码是使用PIMPl 设计模式设计的,那么实现更改通常不会导致大量重新编译。

请记住,即使在使用编译器通常需要知道所指向对象的大小的指针时。PIMPL 模式将“真实”对象隐藏在另一个指针后面。

于 2013-08-17T10:25:55.393 回答
1

是的,但这取决于文件在 make 文件中的来源。如果使用已定义的接口和工厂类正确完成,则仅在修改接口头文件时才需要重新构建其他模块。因此,修改模块头文件和/或源代码不需要重新构建模块。

只有当指针是通过处理真实实例创建的工厂创建并且指针是抽象接口类型时,创建指针才会起作用。

也就是说,您需要包含接口标头并适当地修改 make 文件依赖项,以便它们不直接依赖于模块。

于 2013-08-17T09:49:25.283 回答