为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我不应该包括CPP文件,而是使用头文件?

为什么我不应该包括CPP文件,而是使用头文件?

C++
神不在的星期二 2019-07-19 16:43:54
为什么我不应该包括CPP文件,而是使用头文件?因此,我完成了我的第一个C+编程作业,并获得了我的成绩。但根据评分,我失去了分数including cpp files instead of compiling and linking them..我不太清楚那是什么意思。回顾一下我的代码,我选择不为我的类创建头文件,但是在CPP文件中做了所有的事情(没有头文件它似乎工作得很好.)。我猜评分器意味着我在一些文件中写了‘#include’mycppfile.cpp‘。我的推理#includeCPP文件是:-所有应该进入头文件的东西都在我的cpp文件中,所以我假装它就像一个头文件-在猴子中-猴子做的方式,我看到其他的头文件是#include在文件里,所以我对CPP文件也做了同样的处理。那么我到底做错了什么,为什么是坏的呢?
查看完整描述

3 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

据我所知,C+标准不知道头文件和源文件之间的区别。就语言而言,任何带有法律代码的文本文件都与任何其他文本文件相同。不过,虽然不违法,但将源文件包括在程序中,这将大大消除从分离源文件中获得的任何优势。

本质上,什么#include是告诉预处理器若要获取已指定的整个文件,并将其复制到活动文件中,请在编译器把手放在上面。因此,当您将项目中的所有源文件合并在一起时,您所做的工作与创建一个大型源文件之间根本没有区别,根本没有任何分离。

“哦,这没什么大不了的。如果它运行的话,就好了,”我听见你哭了。从某种意义上说,你是对的。但是现在你要处理的是一个很小的程序,还有一个很好的、相对不受约束的CPU来为你编译它。你不会总是那么幸运的。

如果你深入到严肃的计算机编程领域,你将看到的项目线数可能达到数百万,而不是几十个。很多台词。如果你想在一台现代桌面电脑上编译其中的一个,它可能需要几个小时而不是几秒钟。

“哦,不!这听起来很可怕!但是我能阻止这种可怕的命运吗?”不幸的是,你对此无能为力。如果编译需要几个小时,那么编译就需要几个小时。但这只是第一次真正重要的是-一旦你编译了一次,就没有理由再编译一次了。

除非你改变了什么。

现在,如果有两百万行代码合并成一个巨大的庞然大物,并且需要做一个简单的bug修复,比如说,x = y + 1,这意味着您必须再次编译所有200万行才能测试这一点。如果你发现你想做一个x = y - 1相反,仍然有两百万行编译在等待您。这是浪费了很多时间,可以花在其他任何事情上。

“但我讨厌没有效率!要是有办法就好了。”编译我的代码库的不同部分链接后来他们在一起!“理论上是个好主意。但是,如果您的程序需要知道不同文件中发生了什么呢?除非您想要运行一堆很小的.exe文件,否则不可能完全分离您的代码库。

“但是这肯定是有可能的!否则编程听起来就像纯粹的折磨!如果我找到了分离的方法,该怎么办?”接口与实现?比如说,从这些不同的代码段中获取足够的信息,将它们识别到程序的其余部分,并将它们放在某种类型的代码段中。标头用档案代替?那样的话,我可以用#include 预处理指令只提供编译所需的信息!“

嗯。你可能发现了一些东西。告诉我这对你来说是怎么回事。


查看完整回答
反对 回复 2019-07-19
  • 3 回答
  • 0 关注
  • 795 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信