《c++primer》学习随笔——预处理器变量
来源:互联网 发布:手机淘宝怎么看直播间 编辑:程序博客网 时间:2024/05/23 13:58
第一遍看这本书的时候,稍微扫了一遍这个内容,当时看起来有时生硬,不是很懂,等于跳了过去了。现在再看,感觉很有用,也基本能看明白了。说个题外话,有时候看有些内容,第一次看到的时候,觉得很难理解很难理解,就是反复看好几遍也理解不了。那么不妨就放下这段内容,也许你学过后面的内容的后,有天你再返回来看当初不懂的,就豁然开朗了,学习这本c++primer的过程中,真的有太多的这种体会了。
开始正题:
#define 指示的接受后面的名字,并把这个名字定义为预处理器变量,常用大写。
#ifndef 字面意思就是if not define 如果没有定义。就是如果后面的名字没有被定义成预处理器变量,那么这句话后所有的程序都将被执行,直到遇见#endif
说明具体用法和意义。
假如我自己写了两个头文件one.h,和two.h。其中one.h包括的是一个类的定义;two.h由于也要用到这个类,所以这个头文件里面必然要有一行程序:#include“one.h”。
而我们的主程序里面,开始必然要把我们自己定义的头文件给加进去,必然应该有两行程序:#include“one.h”和#include“two.h”,这样实际上one.h这个头文件被包含了两次,那个类的也相当于定义了两次,必然编译时会出现错误,为了解决这个问题。在one.h里应该加入这么一段程序:
#ifndef ONE
#define ONE
//这里应是one.h里面本来应该有的代码程序
#endif
这样这个头文件在主程序处理时只会被处理一次。因为:当主程序首先碰到这句::#include“one.h,时,由于是第一次处理one头文件,ONE这个预处理器变量还没有定义呢,所以会执行#define ONE这个语句,ONE变量被定义了,头文件one中的代码也会被执行了。当主程序碰到这句:#include“two.h”,由于two头文件中,也有这么一句:#include“one.h”,然后程序就会再次进入到one这个头文件中执行,这是由于ONE这个变量在第一次执行one这个头文件时已经被定义了,所以#ifndef ONE判断失败,不会执行后续的代码了,也就不会在执行one头文件中实际有用的代码了。这样保证了头文件只会被处理一次。
因此应该在自己编写的每个头文件中都加上保护符,避免头文件被多次包含。
开始正题:
#define 指示的接受后面的名字,并把这个名字定义为预处理器变量,常用大写。
#ifndef 字面意思就是if not define 如果没有定义。就是如果后面的名字没有被定义成预处理器变量,那么这句话后所有的程序都将被执行,直到遇见#endif
说明具体用法和意义。
假如我自己写了两个头文件one.h,和two.h。其中one.h包括的是一个类的定义;two.h由于也要用到这个类,所以这个头文件里面必然要有一行程序:#include“one.h”。
而我们的主程序里面,开始必然要把我们自己定义的头文件给加进去,必然应该有两行程序:#include“one.h”和#include“two.h”,这样实际上one.h这个头文件被包含了两次,那个类的也相当于定义了两次,必然编译时会出现错误,为了解决这个问题。在one.h里应该加入这么一段程序:
#ifndef ONE
#define ONE
//这里应是one.h里面本来应该有的代码程序
#endif
这样这个头文件在主程序处理时只会被处理一次。因为:当主程序首先碰到这句::#include“one.h,时,由于是第一次处理one头文件,ONE这个预处理器变量还没有定义呢,所以会执行#define ONE这个语句,ONE变量被定义了,头文件one中的代码也会被执行了。当主程序碰到这句:#include“two.h”,由于two头文件中,也有这么一句:#include“one.h”,然后程序就会再次进入到one这个头文件中执行,这是由于ONE这个变量在第一次执行one这个头文件时已经被定义了,所以#ifndef ONE判断失败,不会执行后续的代码了,也就不会在执行one头文件中实际有用的代码了。这样保证了头文件只会被处理一次。
因此应该在自己编写的每个头文件中都加上保护符,避免头文件被多次包含。
0 0
- 《c++primer》学习随笔——预处理器变量
- c++primer之预处理器
- linux & C++Primer 学习笔记--预处理器的简单介绍
- C++Primer——变量、引用、指针
- c++primer随笔
- C Primer Plus随笔
- 【学习】C预处理器
- C++Primer第五版【学习笔记】——第二章 变量和类型
- C++Primer第五版【学习笔记】——第二章 变量和类型
- C Primer Plus学习 三十六 寄存器变量
- c++primer学习笔记-----2.2变量
- C++Primer::头文件设计基本原则 与 预处理器介绍
- C++primer——第二章 变量和基本类型
- C++Primer读书笔记——变量和基本类型补充
- 《C++Primer》 学习——第三章
- C++ Primer学习笔记——变量声明和定义
- C++Primer变量
- c++primer(第五版)学习过程中的总结——第二章变量和基本类型
- springmvc上传图片实例
- LaTeX排版学习记录
- 【慕课笔记】第四章 JAVA中的集合框架(上) 第3节 学生选课—创建学生类和课程类
- file_get_contents("php://input")的使用方法
- Linux解压缩命令
- 《c++primer》学习随笔——预处理器变量
- 设计模式——职责链模式
- 修改openstack Ubuntu镜像的默认用户的密码
- ASP.NET
- 对话框过程
- Ubuntu 下配置VPN
- Mina系列文章索引
- this关键字
- 使用sqlldr导入GPS数据含有clob字段和双引号