头文件、预处理器、命名空间

1.头文件用于声明而不是用于定义

extern int ival = 10;	//初始化了,为定义,不适合放在头文件中
double dval;            //没有extern,是定义,不适合放在头文件中

 注意:避免防止多重定义链接错误。因为头文件包含在多个源文件中,所以不应该含有变量或函数的定义。

关于头文件不应该含有定义这一规则,有三个例外

头文件可以定义类、值在编译时就已知道的const对象和inline函数。这些实体可在多个源文件中定义,只要每个源文件中的定义是相同的。

 

2.预处理器

(1)头文件经常#include其他的头文件。比如某些类的头文件必须包含string库

(2)避免多重包含,在编写头文件之前,需要引入一些额外的预处理器设施。预处理器允许我们自定义变量。预处理器变量的名字在程序中必须是唯一的。任何与预处理器变量相匹配的名字的使用都关联到该预处理器变量。

为避免名字冲突,预处理器变量经常用全大写字母表示。

预处理器变量有两种状态:已定义,未定义。

#define指示:接受一个名字并定义该名字为预处理器变量。

#ifndef指示:检测指定的预处理器变量是否未定义。如果预处理器变量未定义,那么跟在其后的所有指示都被处理,直到出现#endif

#ifndef F1_H
#define F1_H

#endif

 注意:头文件应该含有保护符,即使这些头文件不会被其他头文件包含。编写头文件保护符并不困难,而且如果头文件被包含多次,它可以避免难以理解的编译错误。

 

3.使用自定义的头文件

#include指示接受两种形式:

#include<>:   标准头文件

#include" ":    非系统头文件,非系统头文件的查找通常开始于源文件所在的路径。

 

4.using声明

格式:using namespace::name;

一旦使用了using声明,我们就可以直接引用名字,而不需要再引用该名字的命名空间。

5.使用标准库类型的类定义

如果在头文件中放置using声明,就相当于在包含该头文件的每个程序中都放置了同一using声明,不论程序是否需要using声明。

注意:通常头文件中应该只定义确实必要的东西。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值