Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1082087
  • 博文数量: 135
  • 博客积分: 10182
  • 博客等级: 上将
  • 技术积分: 1565
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-07 16:05
文章分类

全部博文(135)

文章存档

2011年(5)

2010年(20)

2009年(3)

2008年(16)

2007年(91)

分类: C/C++

2008-10-21 16:14:19

   为了让咱自己的程序看起来专业,咱抛弃了一统江山的单文件形式,采用模块化设计,:-)。这就牵扯到应该把什么塞到C语言的头文件的问题。
 
作为一般规则, 你应该把这些东西放入头(.h) 文件中:
² 宏定义(预处理#defines)
² 结构、联合和枚举声明
² typedef 声明
² 外部函数声明
² 全局变量声明
   当声明或定义需要在多个文件中共享时, 尤其需要把它们放入头文件中。特
别是, 永远不要把外部函数原型放到.c 文件中。另一方面, 如果定义或声明为一个.c 文件私有, 则最好留在.c 文件中。
                  ----------摘自《C语言常见问题集》
  
   当使用#include语句将头文件引用时,相当于将头文件中所有内容,复制到#include处。为了避免因为重复引用而导致的编译错误,头文件常具有 
#ifndef   LABEL
#define   LABEL
   //代码部分
#endif
 
的格式。其中,LABEL为一个唯一的标号,命名规则跟变量的命名规则一样。常根据它所在的头文件名来命名,例如,如果头文件的文件名叫做hardware.h,
那么可以这样使用:
 
#ifndef   __HARDWARE_H__
#define   __HARDWARE_H__
  //代码部分
#endif
 
这样写的意思就是,如果没有定义__HARDWARE_H__,则定义__HARDWARE_H__,并编译下面的代码部分,直到遇到#endif。这样,当重复引用时,由于__HARDWARE_H__已经被定义,则下面的代码部分就不会被编译了,这样就避免了重复定义。
 
   咱照这些个金科玉律搞了一通。遇到一个问题就是我在一个头文件中声明了几个全局变量,然后把它include到要使用的.c文件中。结果一编译就提示我变量未声明。你说我那个郁闷呀,明明在那里,明明include了,它怎么不行呢?""、<>的也试了,死活不行。难道是ICC不支持头文件中声明变量?百思无果,只好乖乖的再声明一把。看着那一堆不专业的,多余的声明,郁闷呀。
 
   隔数日读《C语言常见问题集》,发现一段代码有include 句,心中一动,莫不是?一试之下,果然通过了。原来库里本有time.h文件,我也取了个time.h文件的名,ICC又把当前目录(Debug目录)和个人写的(非库)头文件(Source\H目录)分开放置了,所以""也不好使了。问题找到,咱也舒心了,也记取个教训,名字要个性化,:-)。
 
 
 
 

阅读(4308) | 评论(0) | 转发(0) |
0

上一篇:C++引用详解

下一篇:Windows系统清理脚本

给主人留下些什么吧!~~