在C++中#ifndef 和#define 在C++中
来源:互联网 发布:骑马与砍杀战团mac版 编辑:程序博客网 时间:2024/05/29 14:12
#ifndef xxx//如果没有定义xxx
#define xxx//定义xxx
--------------------------------------------------
不过有一点要注意的是,在C++里面中,尽量不要使用#define定义常量。见:
5.1 为什么需要常量
如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?
(1) 程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。
(2) 在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。
(3) 如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。
l 【规则5-1-1】 尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串。
例如:
#define MAX 100 /* C语言的宏常量 */
const int MAX = 100; // C++ 语言的const常量
const float PI = 3.14159; // C++ 语言的const常量
5.2 const 与 #define的比较
C++ 语言可以用const来定义常量,也可以用 #define来定义常量。但是前者比后者有更多的优点:
(1) const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。
(2) 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。
l 【规则5-2-1】在C++ 程序中只使用const常量而不使用宏常量,即const常量完全取代宏常量。
5.3 常量定义规则
l 【规则5-3-1】需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公共的头文件中。
l 【规则5-3-2】如果某一常量与其它常量密切相关,应在定义中包含这种关系,而不应给出一些孤立的值。
#define xxx//定义xxx
#endif //结束如果
条件编译 跟if 语句差不多 形式为:
#ifdef
程序段1
#else
程序段2
#endif
#ifndef指示检测预处理器变量是否未定义,如果未定义 ,那么后面所有的指示全被处理直到出现#endif
--------------------------------------------------
不过有一点要注意的是,在C++里面中,尽量不要使用#define定义常量。见:
5.1 为什么需要常量
如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?
(1) 程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。
(2) 在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。
(3) 如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。
l 【规则5-1-1】 尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串。
例如:
#define MAX 100 /* C语言的宏常量 */
const int MAX = 100; // C++ 语言的const常量
const float PI = 3.14159; // C++ 语言的const常量
5.2 const 与 #define的比较
C++ 语言可以用const来定义常量,也可以用 #define来定义常量。但是前者比后者有更多的优点:
(1) const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。
(2) 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。
l 【规则5-2-1】在C++ 程序中只使用const常量而不使用宏常量,即const常量完全取代宏常量。
5.3 常量定义规则
l 【规则5-3-1】需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公共的头文件中。
l 【规则5-3-2】如果某一常量与其它常量密切相关,应在定义中包含这种关系,而不应给出一些孤立的值。
- #ifndef 和#define 在C++中什么意思?
- 在C++中#ifndef 和#define 在C++中
- 在C语言头文件中,#ifndef、#define、#endif的作用?
- C/C++头文件中ifndef/define/endif 的作用
- 浅谈C语言中"#ifndef/#define/#endif"的作用
- 在C++中延时
- 为什么在.h文件中使用#ifndef CLASS_H和#define CLASS_H?
- c++ #ifndef#define#endif的用法(整理) 原作者:icwk
- 在C++文件中调用C 的函数
- 在C、C++中调用Matlab
- c/c++中的#ifndef和#define
- 在C和C++中把标准输出重定向到指定文件
- [C/C++]#ifndef,#define用法
- [C/C++]#ifndef,#define用法
- [C/C++]#ifndef,#define用法
- [C/C++]#ifndef,#define用法
- C语言在#define中使用#运算符和##运算符
- 在object-c 中调用c,c++接口
- web.xml 配置
- 手机开机接入网络的过程
- 黑马程序员-----(高薪课程一-----扩展(反射))
- sqlite技巧
- jequery插件 - 拖拽插件
- 在C++中#ifndef 和#define 在C++中
- Util
- 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一
- android:gravity和android:layout_gravity的区别
- 在VC对话框中使用视图
- 10个数的比较
- 温标转换
- 多线程之5-------线程池
- 迭代开发模型和工作流程管理