不想一个个文件去包含,直接使用#include 这种粗爆的方式有什么弊端

szuzsq 2019-11-16 05:12:44
在多个文件里面

#include <QtGui>


Qt在解析、编译、链接阶段,会有什么影响?

比如某个文件其实只用到了:

#include <QLineEdit>
#include <QTreeView>
#include <QAction>


我为了省事,直接:

#include <QtGui>

...全文
372 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
donwmufromdying 2019-11-26
  • 打赏
  • 举报
回复
另外一个要说的是,其实一些编译器进行预编译的时候就会按需自动完成一些包含编译工作。因此,目前一些主流编译器都是非常智能化了。不如传统的GCC,和比较新的Front-end:Clang/back-end:llvm这种编译神器。当年我们用Qt3.3在solaris上编译一个项目需要2个多小时。现在分分钟
szuzsq 2019-11-20
  • 打赏
  • 举报
回复
引用 3 楼 donwmufromdying 的回复:
没多大弊端。最多是编译的时候慢一点点,也不会慢多少,现在的编译器还是很智能的。另外就是你实际用了哪个头文件可能读代码的人并不清楚

你这个观点很有意义,有时候看头文件可以大约猜测功能是如何实现的。

------------------------------------------------------------------------------------------------------
转回原来话题。
首先,粗爆包含的方式,最终编译出来的exe,大小是一样的。因为在链接编译阶段,是按需链接的,没用到的代码,不会链接进最终exe。这个做了试验。

其次,我也做了试验:
一、在a.h里粗爆包含,重新编译用时4s;
二、再加上在b.h里粗暴包含,重新编译用时5s;
三、再加上在c.h里粗暴包含,重新编译用时6s;

看起来用时是递增的。

这一点就理解不了了,打个比方:
a顾客去包厢,妈妈让公主脱光衣服,全身摸一遍;
轮到b顾客了,为什么妈妈还让公主脱光衣服,全身摸一遍?公主全身上下有什么东东,妈妈不是已经了无指掌了吗?

在我理解中,符号解析阶段,是妈妈来摸公主,而不是让顾客来摸,自然就不存在a已经摸了,b又要摸的情形。

------------------------------------------------------------------------------------------------------
我想粗爆包含,也是觉得,第一次让妈妈摸一遍,辛苦就辛苦一点,后面就方便了。

很多时候,写着代码,要用到某个类了,还得滚到顶部去包含一下,再回来,挺烦的。
走好每一步 2019-11-18
  • 打赏
  • 举报
回复
上了几十万的代码,这样编译非常慢的 如果是写个小项目, 无所谓的
donwmufromdying 2019-11-18
  • 打赏
  • 举报
回复
没多大弊端。最多是编译的时候慢一点点,也不会慢多少,现在的编译器还是很智能的。另外就是你实际用了哪个头文件可能读代码的人并不清楚
ooolinux 2019-11-17
  • 打赏
  • 举报
回复
都包含的话,源代码太大,编译慢。

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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