VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1505|回复: 4

多文件编程

[复制链接]
06_avatar_middle
最佳答案
0 
在线会员 发表于 2023-2-9 22:23:50 | 显示全部楼层 |阅读模式
关于Visual Studio 的多文件编程,网上的信息很少,而且不系统,也没有什么书重点讲。有没有大佬愿意分享一下经验。




上一篇:C++关于互斥锁问题
下一篇:如何画一个已知RGB颜色的按钮、编辑框或者画一个矩形
84_avatar_middle
最佳答案
8 
在线会员 发表于 2023-2-16 13:43:01 | 显示全部楼层
多文件 是啥意思
74_avatar_middle
最佳答案
7 
在线会员 发表于 2023-2-17 21:19:16 | 显示全部楼层
也不太清楚您说的多文件是什么意思。我就按我的理解说了。

我想您大概是用Dev-C++这类支持单一源文件编译生成程序,改用VS后,发现单文件无法单独编译。

开发的时候,对于一个用户需求,我们会有一套解决方案用来解决这样的需求,比方说,有一天一个用户希望你为他开发一个四则运算的控制台命令。
那么你的解决方案就是开发这样的命令。因此,你可能会将你的解决方案(Solution)名定为:Calculator
接下来就是解决方案的具体项目。首先,打开任一软件的目录,你会发现有很多文件而不是单一的exe文件。有的会有dll等。这是因为为了后期更新维护和BUG修复,我们为了节省开销,选择将程序划分为模块。而不是一股脑将功能做进一个exe文件。比方说,如果我们开发了一个10MB的exe,但是发布后发现有问题,如果我们修改bug(假设很小),那么修改后的exe大小几乎为10MB,而对于用户则需要将之前下载的10MB程序完全删除,再下载修改后的exe。用户在这个过程中,一共需要下载20MB的数据。
而如果我们进行模块划分,比方说,把加法的具体计算代码,放到一个叫做add.dll的动态链接库中。加入程序本体exe与dll各占5MB,同样发现加法功能出现问题,修改后,dll大小也几乎为5MB不变,那么对于用户来说,只需要删除5MB的出错的dll,而不需要更新程序本体,因此只需要下载15MB的数据就能满足需求。

接下来就是多文件了。
与上同理,为了方便代码维护和可读性,我们也会把代码分别放到多个文件编译。如果您了解编译机制。那想必不难理解。编译器会将项目中的所有源代码编译成目标文件,然后根据引用关系进行链接。这就是多文件的思路。也许有一个类的声明定义都存在,但我们却没有在任何文件中引入这个类的头文件,那么这个类的将不会被链接进入程序。
06_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2023-2-26 13:43:31 | 显示全部楼层
就是为什么要分头文件和源文件?如何处理?
74_avatar_middle
最佳答案
7 
在线会员 发表于 2023-3-4 21:07:47 | 显示全部楼层
自然选择前进四 发表于 2023-2-26 13:43
就是为什么要分头文件和源文件?如何处理?

头文件你就理解为是声明,相当于先跟使用这个头文件的程序说好有哪些东西。源文件就是具体实现。

一般的做法是,头文件里放函数声明,但是定义放到源文件去。类也是如此。所以你用过MFC的话,会发现大多数都是C***Dlg.h,C***Dlg.cpp这样的文件。就是这个原理。至于为什么这么做,我想是方便开发者查看吧。对于这个程序原本开发者倒是没什么。因为他们清楚自己写了什么。假如交给另一位开发者使用,别人其实不必看你具体怎么写的,只要看有什么接口就好了。所以不需要看定义,只需要看声明即可。

这个处理啊,我不太清楚是个什么意思。目前我看过的一些开源项目。大多是项目内使用的头文件及其实现源代码放到项目内,项目间共享的就放到一个公有文件夹然后设置项目源文件目录来引用的。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-12-11 11:19

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表