c/c++中头文件和源文件的关系

.h为头文件,.c/.cpp为源文件

首先:

.h中一般放的是同名.c文件中定义的变量、数组、函数的声明,需要让.c外部使用的声明,一般只有声名,而具体的实现放在源文件中。

要将a.cpp和a.h对应起来,就必须在a.cpp中写上#include"a.h",这样编译器才会把a.h和a.cpp两个文件绑定在一起。

其次:

要了解细节的东西,我们先要清楚译器的工作过程,一般说来编译器会做以下几个过程:

1.预处理阶段

2.词法与语法分析阶段

3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件)

4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息(生成.exe文件)

其中 “预处理阶段”:#include预处理就是完成了一个“复制并插入代码”的工作(因为 #include "xx.h" 这个宏其实际意思就是把当前这一行删掉,把 xx.h 中的内容原封不动的插入在当前行的位置。)

eg. 会将headfile.h的全部内容复制到#include “headfile.h”处,

因为在c语言中,需要先声名才能使用,使用#include头文件,等于是把所有的声名都写了出来,这也是#include为什么放在开头的原因。

时间: 2024-12-28 18:24:40

c/c++中头文件和源文件的关系的相关文章

理解C++中的头文件和源文件的作用【转】

一.C++编译模式通常,在一个C++程序中,只包含两类文件--.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称作C++头文件,里面放的也是C++的源代码.C+ +语言支持"分别编译"(separatecompilation).也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里..cpp文件里的东西都是相对独立的,在编译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做

C++学习笔记(一):头文件和源文件

说明: 当一个源文件(a.cpp)要调用另一个源文件(b.cpp)定义的方法时,需要在a.cpp中写上这个方法的声明(只需要该方法的名称.返回值和参数,类似Java的接口): 如果每次调用其他文件的方法时都写上相同的声明就会很麻烦,而且当b.cpp的定义修改时所有调用到该文件的声明都要修改,这样工作量太大且容易出错,所以出现了头文件,我们把所有的声明都存放到头文件中,需要使用到的时候使用宏命令“#include”包含进这个.cpp文件中即可: #include:只有一个功能:把它后面所写的那个文

C++中的头文件和源文件

一.C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称作C++头文件,里面放的也是C++的源代码.C+ +语言支持“分别编译”(separate compilation).也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里..cpp文件里的东西都是相对独立的,在编 译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做一次链

第二十一章 C++中的头文件和源文件

一.C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称作C++头文件,里面放的也是C++的源代码.C+ +语言支持“分别编译”(separate compilation).也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里..cpp文件里的东西都是相对独立的,在编 译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做一次链

C语言中,头文件和源文件的关系(转)

简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件)4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息.(生成.exe文件) 编译器在编译时是以C文件为单位进行的,也就是

[讨论]是否将单元测试文件和源文件放在一起

目前根据习惯和创作时间,单元测试和源文件的代码都是分开的. engine/ classes/ Elgg/ Class.php tests/ phpunit/ Elgg/ ClassTest.php 是否可以考虑将它们放在一起: engine/ classes/ Elgg/ Class.php ClassTest.php 好处: 可以很清晰地知道哪些文件缺少测试. 可以快速在源文件和单元测试文件之间跳转,而不需要切换文件夹. 遵循了需要一起修改的代码放在一起的原则,方便修改源码时同步修改单元测试文

c语言头文件和源文件不在同一个目录

http://www.cnblogs.com/ShaneZhang/archive/2013/05/20/3088688.html 从工程上讲,头文件的文件名应该与对应的源文件名相同便于维护,如果头文件中包含了多个源文件中的定义或声明,则应该按源文件分组布局头文件中的代码,并且通过注释注明每组所在的源文件.当一个工程的文件较多时应该将源文件与头文件分开目录存放,一般头文件存放在include或inc目录下,而源文件存放在source或src目录下,根据经验,一个工程的文件数超过30个时应该将源文

C语言中头文件——你乱吗????

如果尔等之辈问本大神,为什么需要头文件呢?本大神告诉你:想要知道为什么需要头文件的话,你就应该知道C语言编译的过程: 本大神为你们准备了基本知识: C语言文件的编译与执行的四个阶段并分别描述: C++中的头文件和源文件:如何写头文件    (这个写的很好,明白) 为什么有头文件的原因:(按步骤来) 1. 在一个文件A中,如果要使用另一个文件B里的函数 sum(),那么我们就需要在文件A里面声明函数 sum();  对吧: 2. 如果在文件A 需要使用文件B里的多个函数 , 那么就需要在文件A中声

C++中头文件一般包含哪些东西?

头文件和源文件 由于头文件是为了重用,所以在一个复杂的程序中,头文件可能会被间接地重复包含.如果头文件里面都是函数声明,那问题还不大.如果头文件里面有函数定义(如程序11.2),那么就会出现函数被重复定义的错误,程序将无法运行.我们可以采用函数声明和定义分离的方式:把所有的声明都放在shape.h中,把所有的定义放在shape.cpp中.注意必须在shape.cpp中包含shape.h,否则在编译连接时会发生错误.我们在使用时仍然包含shape.h,但由于函数的定义并不在该头文件中,所以就不会被