头文件的学习

头文件一般用来包含:
函数原型
使用#define或const定义的符号常量
结构声明
类声明
模板声明
内联函数

但是有一件事必需要清楚,就是上述的各种声明只能声明一次,声明多次编译器会报错.对于这个问题,现在有两种解决方法:
1.在头文件的开始处加上预编译指令: #pragma once.这个指令确保此头文件只能被#include一次.
2.使用宏技术:即:
#ifndef T_H
#define  T_H

// 将所有声明写在这里
    
#endif

第1种方法不能确保在所有的编译器下通过,属于相对比较新的用法.第2种方法可以在所有的编译器下通过,其理论是通过定义了一个宏来使编译器只声明一次.

对于全局变量,通常是不能放在头文件中的,这样在多个cpp文件#include这个头文件后会引起重复声明错误(即使使用上面的第2种技巧在VS2005的编译器下也是如此,我有些迷惑),那么通常的方法是在某个cpp文件中声明全局变量,然后在头文件中用extern来声明变量,以通知编译器此变量属于其它cpp文件.但是,也可以通过宏这个技巧将全局变量的声明放到头文件中:
#ifdef _JB_ROOT
#define  EXT 
#else
#define  EXT extern
#endif

// 下面声明变量
EXT  int  var;
当然,需要在某一个cpp文件中(只能是一次,一般是包含main函数的文件)#include这个头文件的前面,声明:#define _JB_ROOT,这样其实是只在第一次时真实的声明了全局变量,其它时候都是声明了extern.

转载于:https://www.cnblogs.com/fxwdl/archive/2008/01/12/1036333.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值