C++头文件保护符怎样实现其作用的?

C++头文件保护符怎样实现其作用的?,第1张

您好!很高兴为您解答。\x0d\x0a\x0d\x0aC++中,一般我们会为了防止头文件被包含多次,都会在每个头文件中写与如下类似的代码:\x0d\x0a\x0d\x0a#ifndefA_H\x0d\x0a#defineA_H\x0d\x0a......//头文件内容\x0d\x0a#endif\x0d\x0a\x0d\x0a头文件第一次被包含时,因为没有宏定义过“A_H”,因此经过语句\x0d\x0a“\x0d\x0a#ifndefA_H\x0d\x0a#defineA_H\x0d\x0a”\x0d\x0a并得到执行后,“A_H”就被定义了,并且头文件的内容会进入编译,直到遇见“#endif”。\x0d\x0a\x0d\x0a而一旦该头文件即将被错误地包含第二次时,与语句“#ifndefA_H”不符,因为第一次你已经定义过“A_H”了,所以“#ifndefA_H”之后的语句不会进入编译了,直到遇见“#endif”。\x0d\x0a\x0d\x0a若头文件被包含一次以上,编译时都会报错。C++头文件保护符的目的就是避免这类错误。\x0d\x0a\x0d\x0a望采纳~若您还有不明白之处,欢迎继续追问~

一般我们会为了防止头文件被包含多次,都会在每个头文件中写与如下类似的代码:

// a.h

#ifndef A_H

#define A_H

//内容

#endif

这样,你如果在两个地方都有这个语句:

#include "a.h"

那么这个头文件将被保证只被加入一次,你知道为什么会只加入一次吗?因为A_H这个宏定义哈。

然后这样其实也可以的:

如:

//a.h

什么也不加..

调用时:

第一次调用

#ifndef A_H

#define A_H

#include "a.h"

#endif

第二次调用:

#ifndef A_H

#define A_H

#include "a.h"

#endif

前者叫内部保护,后者叫外部保护。

由于外部保护经常可能会忘记写,容易被误用,所以我们推荐使用内部保护。

微软提供了一个指令使你可以更方便的保护:

#pragma once//优点:方便,缺点:无可移植性


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11694057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存