关于ifndef的认识

简介: 今天看了一段程序,里面有 #ifndef ... 这个标识符。

今天看了一段程序,里面有 #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常量进行调试,但是不能对宏常量进行调


目录
相关文章
|
Ubuntu 编译器 Windows
zlib开发笔记(四):zlib库介绍、编译windows vs2015x64版本和工程模板
zlib开发笔记(四):zlib库介绍、编译windows vs2015x64版本和工程模板
zlib开发笔记(四):zlib库介绍、编译windows vs2015x64版本和工程模板
|
7月前
Liunx怎么安装spdlog(这是用来管理日志部分)
Liunx怎么安装spdlog(这是用来管理日志部分)
140 7
|
移动开发 前端开发 JavaScript
详细说明前端和后端限制文件大小的具体实现方式
详细说明前端和后端限制文件大小的具体实现方式
320 1
|
8月前
|
存储 运维 大数据
云HIS是什么?HIS系统为什么要上云?云HIS有哪些优点?
云HIS是什么?HIS系统为什么要上云?云HIS有哪些优点?
152 0
|
测试技术 API 网络架构
如何使用Postman Runner实现自动化测试中的参数自增
Postman Runner 是 Postman 工具中的一个强大功能,它可以用来批量运行 API 测试脚本。通过设置不同的参数组合,我们可以轻松地测试 API 的各种不同情况,并生成测试报告和测试结果。
如何使用Postman Runner实现自动化测试中的参数自增
|
机器学习/深度学习 C语言 数据安全/隐私保护
windows下安装MinGW、swig 、zlib
windows下安装MinGW、swig 、zlib
580 0
|
人工智能 Java easyexcel
【工具篇】java导出excel工具类,多种模式自动配置,绝对值得你收藏
【工具篇】java导出excel工具类,多种模式自动配置,绝对值得你收藏
618 0
|
SQL JSON NoSQL
瞧瞧人家写的API接口代码,那叫一个优雅!
瞧瞧人家写的API接口代码,那叫一个优雅!
|
Java 编译器 API
JVM系列之:关于方法句柄的那些事
JVM系列之:关于方法句柄的那些事
256 1
JVM系列之:关于方法句柄的那些事
|
分布式计算 安全 API
异步 API 设计之扇入扇出模式
扇出/扇入模式是更高级 API 集成的主要内容。这些应用程序并不总是表现出相同的可用性或性能特征。
异步 API 设计之扇入扇出模式

热门文章

最新文章