博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
宏定义(#ifndef+#define+#endif)的作用
阅读量:5912 次
发布时间:2019-06-19

本文共 575 字,大约阅读时间需要 1 分钟。

hot3.png

本文介绍#ifndef、#define、#endif三者一起使用的宏定义的作用。

在头文件中,我们经常会在头文件中见到#ifndef、#define、#endif三者一起使用的宏定义。

例如,在头文件xxx.h中(此样式可参考):

#ifndef __XXX_H__

#define __XXX_H__
#include <iostream>
 
// 其他代码
 
#endif
使用#ifndef、#define、#endif组合宏定义的作用是:防止头文件的重复包含和编译。

例如,现在有4个文件:main.cpp、fileA.h、fileB.h、fileC.h,这几个文件的包含关系如下:

在fileC.h中,存在nTest的定义。在这种情况下,编译main.cpp时,系统就会报错,提示nTest重定义,错误信息如下:

使用本文介绍的#ifndef、#define、#endif宏定义组合,就可以很好的避免此问题,修改后的fileC.h代码如下:

#ifndef __FILEC_H__

#define __FILEC_H__
#include <iostream>
 
using namespace std;
 
int nTest = 1;
 
#endif

转载于:https://my.oschina.net/u/920274/blog/3050634

你可能感兴趣的文章
ByteBuffer方法解读
查看>>
Python基础之类
查看>>
MyBaties中resultMap简单入门
查看>>
threejs中让物体围绕指定轴旋转
查看>>
VIM一般模式
查看>>
SqlServer数据库(可疑)解决办法4种
查看>>
使用PHP辅助快速制作一套自己的手写字体实践
查看>>
(四)整合spring cloud云服务架构 - HongHu企业分布式微服务云架构
查看>>
EL表达式详解
查看>>
JAVA基础--QR_Code二维码生成
查看>>
如何正确获取用户 IP (避免透明代理,避免伪造 HTTP_X_FORWARDED_FOR)
查看>>
postMan下载
查看>>
多线程学习--线程内共享对象ThreadLocal
查看>>
nginx负载均衡、配置ssl
查看>>
Java开发中存在这样的代码,反而影响整体整洁和可读性
查看>>
DateTimeContinousAxis 和 DateTimeCategoryAxis 轴的选择
查看>>
Spring Batch框架流程
查看>>
mybatis与hibernate的对比
查看>>
硬分叉升级加速BCH相关应用研发
查看>>
webpack配置(第二步:入门篇)
查看>>