IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> #ifndef在头文件中的作用 -> 正文阅读

[C++知识库]#ifndef在头文件中的作用

#ifndef出现在所有头文件中,似乎成了定式。他在头文件中的作用是防止头文件被include多次。

给个例子:

#ifndef HEADERFILE_H
#define HEADERFILE_H
// some declarations in
// the header file.
#endif

这里面#ifndef和#endif配套使用可以起到上诉的作用。

比如我们有 a.cpp b.h c.h d.h这四个文件。

a.cpp:

#include<iostream>
#include"b.h"
#include"c.h"
using namespace 
int mian()
{
    cout<<"Hello China"<<endl;
    return 0;
}

b.h:

#ifndef b_H
#define b_H
#include"d.h"
'''
b的内容
'''
#endif

c.h:?

#ifndef c_H
#define c_H
#include"d.h"
'''
c的内容
'''
#endif

这里我们可以不用管d.h里面是什么内容,在编译器编译a.cpp时,先去编译b.h,而b.h里包含d.h,编译器再去编译d.h,至此b.h的内容解决完毕。编译器继续编译c.h,按逻辑继续编译d.h,但是已经编译过了,这时出现定义错误。#ifndef就是解决这个问题。

此外,#ifndef可以防止任何标识符(如类型、枚举、类和静态变量)的重新声明。它们还可以防止递归包含; 例如,“ file1.h”包含“ file2.h”,“ file2.h”包含“ file1.h”。

也就是说不管遇不遇得到这个问题,我们都需要在头文件中加入#ifndef,C++有好多这样的情况,如内联,你还能想到有哪些呢?

而#define下面定义该头文件内容。

参考:

What are #ifndef and #define used for in C++?

#ifndef用法_放下扳手&拿起键盘的博客-CSDN博客_ifndef的用法

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:09:20  更:2022-04-27 11:10:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:57:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码