TLDR:请参阅此问题的最后一段。使用前声明的历史原因,包括和标题/来源拆分。需要找到合适的参考
我是一名计算机科学专业的学生,试图完成关于创建转译器(案例研究)的我的硕士论文的文本。
对于这篇硕士论文,我的文章的一部分是关于比较涉及的语言。其中一种语言是C++。
现在我试图解释导入/包含语义的差异以及C++为什么这样做的历史原因。我知道它是如何在C/C++中起作用的,所以我并不需要技术上的解释。
在谷歌和广泛#1研究,我想出了几种解释计算器和其他参考有关此主题:
Why are forward declarations necessary?
What are forward declarations in C++?
Why does C++ need a separate header file?
http://en.wikipedia.org/wiki/Include_directive
http://www.cplusplus.com/forum/articles/10627/
https://softwareengineering.stackexchange.com/questions/180904/are-header-files-actually-good
http://en.wikipedia.org/wiki/One-pass_compiler
Why have header files and .cpp files in C++?
最后但并非最不重要了Bjarne Stroustrup的(第34页 - 35)的书 “设计和C演化++(1994年)”。
如果我理解正确的话做进口这种方式/包括由C来了,来是因为以下几个原因:
电脑是没有那么快,所以一个合格的编译器是可取的。唯一可行的方法是在使用惯用语之前强制执行声明。这是因为C和C++是具有上下文敏感语法的编程语言:它们需要在符号表中定义正确的符号才能消除某些规则的歧义。这与现代编译器相反:现在第一遍通常用于构造符号表,有时(如果语言具有上下文无关语法),在解析阶段不需要符号表,因为不存在歧义。
那段时间内存非常有限和昂贵。因此在大多数计算机中将整个符号表存储在内存中是不可行的。这就是为什么C让程序员提前声明他们实际需要的函数原型和全局变量。创建头部是为了使开发人员能够将这些声明集中在一起,以便在需要这些符号的模块之间轻松地重用它们。
头文件是抽象接口一种有用的方式从实施
C++试图建立与软件并写入C.更重要softwarelibraries向后兼容性:它们实际上用于transpile到C(CFRONT),然后使用C编译器将代码编译为机器码。这也使他们能够从一开始就编译到很多不同的平台,因为每个平台都有一个C编译器和C链接器。
上面是什么,我先搜索发现了一个说明;)的问题是:我不能从这里#2找到一个合适的引用此包括战略的历史原因,一边。我非常怀疑我的大学会很满意一个计算器链接。我最接近的是“C++的设计和发展”参考,但没有提到硬件限制是包含策略的一个原因。我认为这是可以预料的,因为这个特性的设计来自C.问题是我没有找到任何好的源代码,但是用C来描述这个设计决策,最好考虑硬件限制。
任何人都可以指出我的好方向吗?
谢谢!
您的第一个链接清楚地解释了它。至于找到参考,我不知道你是否能找到一个适当的参考,为每一个在20世纪70年代初作出的决定......但祝你好运:) –
我知道,这是我的大部分解释来自;)但我怀疑我的大学会接受这个参考。这就是我问的原因。但是,无论如何谢谢回答;)我真的希望我仍然可以找到一个。 –