http://www.cnblogs.com/infiniti/archive/2013/03/19/2968689.html

编译器在编译时是以C文件为单位进行的,也就是说如果你的项目中一个C文件都没有,那么你的项目将无法编译,连接器是以目标文件为单位,它将一个或多个目标文件进行函数与变量的重定位,生成最终的可执行文件,在PC上的程序开发,一般都有一个main函数,这是各个编译器的约定,当然,你如果自己写连接器脚本的话,也可以不用main函数作为程序入口!!

已知头文件“a.h”声明了一系列函数(仅有函数原型,没有函数实现),“b.cpp”中实现了这些函数,那么如果我想在“c.cpp”中使用“a.h”中声明的这些在“b.cpp”中实现的函数,通常都是在“c.cpp”中使用#include “a.h”,那么c.cpp是怎样找到b.cpp中的实现呢? 
其实.cpp和.h文件名称没有任何直接关系,很多编译器都可以接受其他扩展名。 
谭浩强老师的《C程序设计》一书中提到,编译器预处理时,要对#include命令进行“文件包含处理”:将headfile.h的全部内容复制到#include “headfile.h”处。这也正说明了,为什么很多编译器并不care到底这个文件的后缀名是什么----因为#include预处理就是完成了一个“复制并插入代码”的工作。 
程序编译的时候,并不会去找b.cpp文件中的函数实现,只有在link的时候才进行这个工作。我们在b.cpp或c.cpp中用#include “a.h”实际上是引入相关声明,使得编译可以通过,程序并不关心实现是在哪里,是怎么实现的。源文件编译后成生了目标文件(.o或.obj文件),目标文件中,这些函数和变量就视作一个个符号。在link的时候,需要在makefile里面说明需要连接哪个.o或.obj文件(在这里是b.cpp生成的.o或.obj文件),此时,连接器会去这个.o或.obj文件中找在b.cpp中实现的函数,再把他们build到makefile中指定的那个可以执行文件中。

C语言头文件和源文件的关系相关推荐

  1. C语言头文件和源文件差异,#include两种引用方式差异

    一些初学c语言的人,不知道头文件(*.h文件)原来还可以自己写的.只知道调用系统库函数时,要使用#include语句将某些头文件包含进去.其实,头文件跟.c文件一样,是可以自己写的.头文件是一种文本文 ...

  2. 头文件和源文件的关系

    一.关于头文件和源文件之间的关系,理解把握要点在于: 1.头文件是给编程开发人员看的,而源文件是给编译器看的: 2.在#include头文件时,编译器直接把相应的头文件复制粘贴到源文件的相应位置: 3 ...

  3. 什么是c 语言中源文件,C++中头文件和源文件详细介绍

    C++中的头文件和源文件详解 一.C++编译模式 通常,在一个C++程序中,只包含两类文件--.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称 ...

  4. C语言中头文件和源文件的注意事项

    C语言中头文件和源文件的注意事项 文章目录 C语言中头文件和源文件的注意事项 0.前言 1.实现步骤 1.1 拆分前 1.2 拆分后 2.总结 2.1头文件内容 2.2 源文件(.c)内容 2.3 函 ...

  5. c 语言头文件和源文件

    总结: 头文件和源程序h结尾的就是头文件,c结尾的就是源文件 把定义和实现分开,就可以通过头文件和源程序分开 在头文件中去定义,在源文件中去实现,然后main方法包含的时候只要包含头文件就可以了. 0 ...

  6. C++ 笔记(25)— 理解 C++ 中的头文件和源文件的作用

    1. C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件: .cpp 文件,被称作 C++ 源文件,里面放的都是 C++ 的源代码 .h 文件,被称作 C++ 头文件,里面放的也是 C++ ...

  7. C++头文件和源文件,编译过程

    源文件如何根据#include来关联头文件  1.系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找. #include <xxx.h> 2.用户自定义的文件用双引号括起来, ...

  8. C++头文件和源文件的编译过程

    源文件如何根据#include来关联头文件 1.系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找. #include <xxx.h> 2.用户自定义的文件用双引号括起来,编 ...

  9. 理解 C++ 中的头文件和源文件的作用

    一.C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件-- .cpp 文件和 .h 文件.其中,.cpp 文件被称作 C++ 源文件,里面放的都是 C++ 的源代码:而 .h 文件则被称作 ...

  10. C++:include:理解 C++ 中的头文件和源文件的作用

    关于头文件和源文件我们主要围绕: C++编译模式, 声明和定义区别, 符号只能被定义一次, 符号被定义在多个源文件,但是一个源文件只能定义一次 这四个方面来分析论述 1:C++ 编译模式 在一个C++ ...

最新文章

  1. 荣耀:想成功要敢于推翻重来
  2. CentOS7下zip解压和unzip压缩文件
  3. 从入门到放弃,.net构建博客系统(二):依赖注入
  4. Wordpress安装简要说明
  5. html Selection
  6. Python功能之反射
  7. 中国科学院大学计算机金智,金智-中国科学院大学-UCAS
  8. 知识与智慧的区别是什么?
  9. linux 添加samba账户
  10. 弹出ifame页面(jquery.reveal.js)
  11. 使用Jorm简单的增删查改数据库
  12. Java 获取Excel中的表单控件
  13. springboot获取apk包名、app名称、版本名称、版本号
  14. Java设置定时器一种简单方法
  15. Diffusion Models专栏文章汇总:入门与实战
  16. 逻辑回归-关于WOE和IV的一些理解
  17. 女码农献丑-企业智能机器人客服(图灵机器人)
  18. 关于考研的反省和一些感悟
  19. 互斥事件的概念和公式_互斥事件
  20. git fork的使用

热门文章

  1. 解决HTML显示中文乱码问题
  2. 【STM32】OLED显示程序
  3. 一加7T可以刷鸿蒙系统吗,一加7T最新系统升级刷机包(官方刷机固件完整rom包公测版第九版)...
  4. Python实现list列表的有序子集查找
  5. jquery清空某个元素下的所有节点
  6. [XW大数据技术学习探讨] 公众号学习笔记
  7. php如何获取客户端请求ip地址的方法
  8. 前端字体图标的使用(阿里、icomoon)
  9. 《SteamVR2.2.0官方教程(二)》(Yanlz+Unity+XR+VR+AR+MR+SteamVR+Valve+Tutorials+Interaction+Oculus+立钻哥哥++ok++)
  10. vmware开启虚拟机时虚拟机黑屏的解决办法