
c与c++的编译原理
追逐天空的程序员
这个作者很懒,什么都没留下…
展开
-
C++编译器与链接器工作原理
1、编译:编译器对源文件进行编译,就是把源文件中的文本形式存在的源代码翻译成机器语言形式的目标文件的过程,在这个过程中,编译器会进行一系列的语法检查。如果编译通过,就会把对应的CPP转换成OBJ文件。 2、编译单元:根据C++标准,每一个CPP文件就是一个编译单元。每个编译单元之间是相互独立并且互相不可知。 3、目标文件:由编译所生成的文件,以机器码的形式包含了编译单元转载 2015-07-14 17:58:48 · 363 阅读 · 0 评论 -
C++中函数的定义和声明深度解析
声明是告诉编译器一些信息,以协助编译器进行语法分析,避免编译器报错。而定义是告诉编译器生成一些代码,并且这些代码将由连接器使用。即:声明是给编译器用的,定义是给连接器用的。这个说明显得很模糊,为什么非要弄个声明和定义在这搅和?那都是因为C++同意将程序拆成几段分别书写在不同文件中以及上面提到的编译器只从上朝下编译且对每个文件仅编译一次。 编译器编译程序时,只会一个一个源文件编译,并分转载 2015-07-16 11:23:32 · 853 阅读 · 0 评论 -
C/C++ 中头文件相互包含引发的问题
今天下午遇到一个头文件相互包含而导致的编译问题,花了我不少时间去调试没找到问题,最后晚上跟师兄讨论不少时间,突然有所顿悟! 问题重现 我把问题脱离于项目简单描述一下:我写了一个函数 bool func(ClassA* CA) 需要加到项目中,我就把这个函数的声明放到 head1.h 中,函数参数类型 ClassA 定义在另一个头文件 head2.h 中,因此我需要在 head1.h 中转载 2015-07-15 17:06:53 · 480 阅读 · 0 评论 -
C++中的异常处理
一、简单的例子 首先通过一个简单的例子来熟悉C++ 的 try/catch/throw: 1 #include //包含头文件 2 #include 3 double fuc(double x, double y) //定义函数 4 { 5转载 2015-09-15 20:54:09 · 524 阅读 · 0 评论