关于ifndef的认识
来源:互联网 发布:淘宝里实名认证在哪 编辑:程序博客网 时间:2024/06/11 00:16
今天看了一段程序,里面有 #ifndef ... 这个标识符。
#ifndef 一般是和 #endif 结合使用的,一般的,当一个文件包含几个头文件时,而且每个头文件都可能定义了相同的宏,使用#ifndef可以防止对该宏重复定义。
#ifndef x
//先测试x是否被宏定义过,#ifndef的反义词是#ifdef #ifndef通常定义以前从未定义过的常量。没错是常量!!
#endif
//如果已经定义了则编译#endif后面的语句
条件指示符#ifndef 检查预编译常量在前面是否已经被宏定义。如果在前面没有被宏定义,则条件指示符的值为真,于是从#ifndef 到#endif 之间的所有语句都被包含进来进行编译处理。相反,如果#ifndef 指示符的值为假,则它与#endif 指示符之间的行将被忽略。
条件指示符#ifndef 最主要目的是防止头文件的重复包含和编译。
const 与 #define的比较
C++ 语言可以用const来定义常量,也可以用 #define来定义常量。但是前者比后者有更多的优点:
(1) const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。
(2) 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调
0 0
- 关于ifndef的认识
- 关于#ifndef、#define、#endif的用法
- 关于define、ifdef、ifndef、endif的讲解
- 关于#ifndef,#define,#end的说明
- 关于 #ifndef #indef 的用法总结
- 关于场景的认识
- 关于朝令夕改的认识
- 关于委托的认识
- 关于LinQ的认识
- 关于dojo的认识
- 关于DDD的认识
- 关于粒度的认识
- 关于dataset的认识
- 关于dhcp的认识
- 关于连接的认识
- 关于字节的认识
- 关于task_struct的认识
- 关于Bean的认识
- 首次使用Android Studio应该做的事
- Android configChanges
- ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
- FastJson.API详解
- 清华组合数学第一章经典复习题,用六种算法计算839647521后999种排列
- 关于ifndef的认识
- 去除[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platfor
- C++实现图片的base64编码
- Hadoop 2.6.0集群搭建(伪分布式+分布式)
- 使用Mybatis向MySQL批量插入数据
- hdu 1106 排序
- 在没有return的情况下可改变new的对象内的值
- storm流程——flume和kafka的连接
- 很好的编程学习网站,尤其学习linux下编程