c++中的包含保护符
来源:互联网 发布:飞控软件下载 编辑:程序博客网 时间:2024/04/28 00:01
http://kingphp.blog.163.com/blog/static/20042324420128395434647/
c++ 头文件保护符
在C++中我们写头文件时经常需要#include来包含其他头文件。头文件定义的实体经常使用其他头文件的设施。
包含其他头文件是如此的司空见惯,甚至一个头文件被多次包含进同一源文件中也不是什么稀奇的事。例如一个头文件中用到string类型的变量,而包含这个头文件的源文件中也用到string类型的变量,这个时候string头文件就被包含了两次:一次是通过程序本身直接包含,另一次是通过包含自写头文件而间接包含。
因此,设计头文件的时候,应该使其可以多次包含在同一源文件中,这一点是很重要的。我们必须保证多次包含同一头文件不会引起该头文件的类和对象被多次定义。使得头文件安全的通用做法是使用预处理器定义的头文件保护符。头文件保护符用于避免在已经见到头文件的情况下重新处理该头文件的内容。
在编写头文件之前,我们需要引入一些额外的预处理器设施。预处理器允许我们自定义变量。
为了避免命名冲突,预处理器变量经常用全大写字母表示。预处理器变量有两种状态:一定义和未定义。定义预处理器变量和检测器状态所用的预处理器指示不同。#define指示接受一个名字并定义该名字为预处理器变量。#ifndef指示检测指定的预处理器变量是否未定义。如果预处理器变量未定义,那么跟在其后面的所有指示都被处理,直到出现#endif。为了保证头文件在给定的源文件中只处理一次,我们首先检测#ifndef。第一次处理头文件时,测试会成功,因为相应的预处理器还未定义。下一条语句就定义了该预处理器变量。那样的话,如果我们编译的文件敲好又一次包含了该头文件,#ifndef指示会发现该预处理器已经定义,并且忽略该头文件的剩余部分。
当没有两个头文件定义和使用同名的预处理器变量时,这个策略相当有效。我们可以用定义在头文件里的实体(如类)来命名预处理器变量来避免预处理器变量重名的问题。
注意:头文件应该包含有保护符,即使这些头文件不会被其他头文件包含。编写头文件保护符并不难,而且如果头文件被包含多次,它可以避免难以理解的编译错误。
- c++中的包含保护符
- 随机生成c/c++头文件保护符
- 头文件保护符
- c++ 头文件保护符
- c++ 头文件保护符
- C++ 头文件保护符
- 头文件保护符和#pragma once
- 头文件保护符引发的思考
- 头文件保护符和#pragma once
- 头文件保护符和#pragma once
- c++头文件 include保护符
- #define、预处理、头文件保护符
- C++预处理功能:头文件保护符
- 声明和定义,文件保护符,extern
- 1.10a头文件保护符
- 文件保护符(header guard)
- C++头文件保护符和变量的声明定义
- C++编程规范 编程风格 学习 (5) --总是编写内部#include保护符,绝不要编写外部#include保护符
- Cstring转int型问题(error C2664: “atoi”: 不能将参数 1 从“CString”转换为“const char *”))
- Objective-C中@property与@synthesize配对使用
- android学习之CheckBox
- 航行时,计算地球上2个位置的距离,方位角度程序
- FFmpeg获取视频旋转角度rotate获取不到的问题解决
- c++中的包含保护符
- Windows Sockets 基础
- windows xp开机提示系统资源不够 无法完成api
- 构建微服务-第一章-什么是微服务_004部署和组织协调
- Linux查看真实内存使用率
- 如何创建一个android的react-native组件(二)
- Unix网络编程(一):套接字地址结构
- 第三方进度显示器MBProgressHUD的使用
- XSS HTTP-only