社区
C++ 语言
帖子详情
C++中的编译依存关系
toadzw
2008-10-30 05:26:12
当一个类中的哪些部分发生变化时,使用这个类的文件要求重新编译?共有成员,私有成员,共有函数,私有函数。。。。
...全文
115
12
打赏
收藏
C++中的编译依存关系
当一个类中的哪些部分发生变化时,使用这个类的文件要求重新编译?共有成员,私有成员,共有函数,私有函数。。。。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
andoneorzero
2009-08-26
打赏
举报
回复
to ls: 不用重新编译
toadzw
2008-10-31
打赏
举报
回复
好像要是重编译的
kiffa
2008-10-31
打赏
举报
回复
to ls: 你这结论怎么得来的???????????????
// book.h
class Book
{
public:
void Print();
}
// book.cpp
#include <iostream>
#include "book.h"
void Book::Print(){std::cout << "haha" << std::endl;}
// main.cpp
#include "book.h"
int main()
{
Book b;
b.Print();
}
main.cpp 引用了 book.h,如果book.h的实现部分发生变化,也就是book.cpp发生了变化,比如:
// book.cpp
void Book::Print(){std::cout << "xixi" << endl;}
那么main.cpp完全不需要重新编译,只需要重新编译book.cpp,然后链接main.o 和 book.o即可。
toadzw
2008-10-30
打赏
举报
回复
all wrong
头文件实现部分发生变化,而引用这个头文件的文件引要重新编译
kiffa
2008-10-30
打赏
举报
回复
楼主的意思大概是:通过 include 头文件来使用一个类,如果这个类的接口不变,只是内部实现发生了变化,那么使用这个类的文件就不需要重新编译,只需要重新编译一下类的实现文件,再链接这个文件就行了。
当然这和楼上各位所说的并不抵触。
帅得不敢出门
2008-10-30
打赏
举报
回复
[Quote=引用 3 楼 wuyu637 的回复:]
一个文件就算没有发生实际内容的变化,
比如在无关处加个空格,也会引起文件的重编译,
决定重编译的条件一般是md5,或者是文件的最后修改时间,而不是具体的文件里的类,或者什么。
.h发生重编译的时候,一般可能引起的连锁反应会更多一些(其他文件也冲编译了)。
实际上在编译器的编译阶段,没有.h,和.cpp之分,都是.cpp的文件,
.h文件已经被编译器之前的操作,加到相应的。cpp文件里了。
[/Quote]
gcc查询的是时间
toadzw
2008-10-30
打赏
举报
回复
is?
General1982
2008-10-30
打赏
举报
回复
[Quote=引用 2 楼 wlamos 的回复:]
更严格的说是所有直接、间接依赖于改变的头文件的文件都需要重新编译
[/Quote]
支持这个!
xhs_lh04
2008-10-30
打赏
举报
回复
文件没改变不用重新编译,文件改变了就应该重新编译,跟类没关系吧
wuyu637
2008-10-30
打赏
举报
回复
一个文件就算没有发生实际内容的变化,
比如在无关处加个空格,也会引起文件的重编译,
决定重编译的条件一般是md5,或者是文件的最后修改时间,而不是具体的文件里的类,或者什么。
.h发生重编译的时候,一般可能引起的连锁反应会更多一些(其他文件也冲编译了)。
实际上在编译器的编译阶段,没有.h,和.cpp之分,都是.cpp的文件,
.h文件已经被编译器之前的操作,加到相应的。cpp文件里了。
wlamos
2008-10-30
打赏
举报
回复
更严格的说是所有直接、间接依赖于改变的头文件的文件都需要重新编译
wlamos
2008-10-30
打赏
举报
回复
跟哪部分没有关系,头文件中的东西发生了变化,那么所有包含这个头文件的文件都需要重新编译。
如果是一个cpp文件发生了变化,则只重新编译该文件即可
C++
文件
依存关系
介绍
在
C++
编程
中
,文件之间的
依存关系
是一个关键的概念,特别是在大型项目
中
,理解并管理这种关系对于提高
编译
效率至关重要。文件
依存关系
是指一个源文件或头文件需要依赖其他文件
中
的定义或声明才能正常
编译
和链接。在...
31减少
编译
《Effective
C++
》是Scott Meyers的经典著作,其
中
的第31项建议“将文件间的
编译
依存关系
降至最低”旨在帮助开发者提高构建速度,降低
编译
时的耦合度。这一条建议主要涉及如何通过使用接口类(Interface Class)和...
在c#
中
调用
c++
类库
实践过程
中
,可以使用Visual Studio的调试工具,如“依存项浏览器”(Dependency Walker)来检查DLL的依赖关系,以及“调试器”来跟踪调用过程,帮助找出可能的问题。 总结来说,调用
C++
类库在C#
中
是一项技术性的...
Effective
C++
中
文版
条款31:将文件间的
编译
依存关系
降至最低 6.继承与面向对象设计 条款32:确定你的public继承塑模出is-a关系 条款33:避免遮掩继承而来的名称 条款34:区分接口继承和实现继承 条款35:考虚virtual函数以外的...
quickfast-linux:QuickFAST-用于本机C ++ linux的FAST协议的实现
QuickFAST / FIX适用于流协议(Linux)
依存关系
安装在ubuntu 14.04上进行了测试,并在deps
中
填充了库的版本步骤1:为
编译
过程准备环境安装
编译
工具和依赖项,请遵循以下命令: $ sudo apt-get install build-...
C++ 语言
65,199
社区成员
250,520
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章