社区
C++ 语言
帖子详情
C++中的编译依存关系
toadzw
2008-10-30 05:26:12
当一个类中的哪些部分发生变化时,使用这个类的文件要求重新编译?共有成员,私有成员,共有函数,私有函数。。。。
...全文
103
12
打赏
收藏
C++中的编译依存关系
当一个类中的哪些部分发生变化时,使用这个类的文件要求重新编译?共有成员,私有成员,共有函数,私有函数。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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++
文件
依存关系
介绍
首先我不给出
依存关系
的定义,我给出一个例子。 代码如下: class Peopel{ public: People(const std::string & name,const Date& brithday,Image Img) std::string name( ) const; Date birthDate( ) const; ...
Effective
C++
中
文版
条款31:将文件间的
编译
依存关系
降至最低 6.继承与面向对象设计 条款32:确定你的public继承塑模出is-a关系 条款33:避免遮掩继承而来的名称 条款34:区分接口继承和实现继承 条款35:考虚virtual函数以外的...
学会在Linux上
编译
调试
C++
项目
本课程主要针对没有或者很少写过linux上
C++
程序的同学, 本课程会教你如何从0基础开始,安装配置ubuntu虚拟机、使用GCC
编译
普通程序、动态库、静态库,编写复杂项目配置文件makefile,使用GDB工具调试
C++
程序。
31减少
编译
测试《Efffective
C++
》p140,31:将文件间的
编译
依存关系
降至最低-140
Effective
C++
(第三版)
条款31:将文件间的
编译
依存关系
降至最低 minimize compilation dependencies between files. 6. 继承与面向对象设计 inheritance and object-oriented design 条款32:确定你的public继承塑模出is-a关系 make sure...
C++ 语言
64,646
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章