关于.h头文件修改后的编译问题

CL_bb 2014-04-02 10:49:48
各位大大,我在一个ff.h头文件中,定义了一个结构体A,它包含方法a(),也写在ff.h,
如果我在a()中修改了一些代码,比如加入一行打印,不改动ff.cpp的内容,必须make clean再make才会生效吗?直接删掉ff.o再make,不能生效?什么原理啊?请详细解答
...全文
535 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-04-03
  • 打赏
  • 举报
回复
个人建议:对build all一次不超过30秒的项目只用build all,不用其它build功能。
CL_bb 2014-04-03
  • 打赏
  • 举报
回复
继续补充 我有一个gg.cpp和gg.h文件,他们是唯一调用a()方法的, 改为 我有一个gg.cpp和gg.h文件,他们是唯一调包含ff.h和唯一调用a()方法的,
CL_bb 2014-04-03
  • 打赏
  • 举报
回复
继续补充 我有一个gg.cpp和gg.h文件,他们是唯一调用a()方法的, 改为 我有一个gg.cpp和gg.h文件,他们是包含ff.h和唯一调用a()方法的,
CL_bb 2014-04-03
  • 打赏
  • 举报
回复
额 多谢大家的回答 @ri_aje 我有一个gg.cpp和gg.h文件,他们是唯一调用a()方法的,我删除gg.o 重新生成,一样不能使之生效。为什么呢?有什么详细资料介绍吗?
CL_bb 2014-04-03
  • 打赏
  • 举报
回复
引用 12 楼 ri_aje 的回复:
少说了一点,如果 gg.cpp 也被其他文件包含,则同样的道理也适用于 gg.cpp,波及的文件可能会更多。
重编了所有包含ff.h的文件,让它们重新生成.o,今天早上已经测试过了,还是不起作用。 在我之前的认识里面,也觉得把包含的都重新生成就OK,但实际好像不是这个样子的,大家可以自己测试下。 有什么确定的资料吗?
ri_aje 2014-04-03
  • 打赏
  • 举报
回复
少说了一点,如果 gg.cpp 也被其他文件包含,则同样的道理也适用于 gg.cpp,波及的文件可能会更多。
ri_aje 2014-04-03
  • 打赏
  • 举报
回复
引用 6 楼 CL_bb 的回复:
额 多谢大家的回答 @ri_aje 我有一个gg.cpp和gg.h文件,他们是唯一调用a()方法的,我删除gg.o 重新生成,一样不能使之生效。为什么呢?有什么详细资料介绍吗?
删除 gg.o 只能解决 gg.cpp 代码的问题,gg.h 因为调用了 a 也需要重新编译,以及所有直接或间接包含 gg.h 的其他文件和它们对应的 .o,直到所有可能受影响的文件都重新编译了。 最好用 make,让人脑去干计算机的活是自找麻烦。
CL_bb 2014-04-03
  • 打赏
  • 举报
回复
单线程编译都是半小时的项目。。。 另外对原理比较感兴趣,可有相关资料推荐?
ri_aje 2014-04-03
  • 打赏
  • 举报
回复
凡是包含 ff.h 的文件都需要重新编译。 定义放在 cpp 里面的好处之一就是局部化受影响文件。
max_min_ 2014-04-02
  • 打赏
  • 举报
回复
修改了头文件的话,就需要重新make clean了!或者删掉连接需要的.o文件也可以
softee 2014-04-02
  • 打赏
  • 举报
回复
不过若其他文件中也引用了a(),则其他文件中的执行不会更新。
softee 2014-04-02
  • 打赏
  • 举报
回复
删掉ff.o,应该是一样可以生效的啊。
mujiok2003 2014-04-02
  • 打赏
  • 举报
回复
ff.o: ff.cpp ff.h

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧