Chinaunix首页 | 论坛 | 博客
  • 博客访问: 240329
  • 博文数量: 22
  • 博客积分: 592
  • 博客等级: 中士
  • 技术积分: 344
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-22 14:49
文章分类

全部博文(22)

文章存档

2013年(2)

2012年(6)

2011年(14)

我的朋友

分类: C/C++

2011-05-29 17:18:05

一个C项目由若干个文件组成.包括*.c 和*.h。其中*.c叫原程序文件.从编译器的角度讲也叫实现文件.*.h是声明文件。里面包括了许多变量和函数的声明。

          在这里不得不说*.h文件的由来,以便更好理解头文件的作用。在最初是没有*.h文件的,所以在一个源文件的开头总是写满了各种的声明,最为主要的是当几个源文件所要用的函数或变量相同时 ,也得在每个文件都挨个声明,这导致使用极为不便,和程序修改容易出错、和程序维护起来麻烦。所以后来就出现了*.h文件来包含函数和变量的声明,要使用这些函数和变量是 #include<*.h>就得了  编译器在编译到此时把include指令删除,然后把include指令所指定的头文件内容插入当前位置。

         林锐写的高质量C/C++编程上头文件的作用的简短描述:

  (1)通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。
  (2)头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。

  编译器的输入是实现文件,每一个实现文件对编译器来说是一个单独的翻译单元,编译器将其翻译为目标代码,通常是一个obj文件。最后由链接器将所有的obj文件连成一个完整的可执行程序。

阅读(2081) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~