【HR】C语言_防止头文件重复包含

【HR】梦一帆   ·   发表于 6个月前   ·   编程代码
我们先来看一个例子。

1.这是代码

——————————————

2.我们在 main.c 打印 num

——————————————
3.gcc 编译报错

——————————————
4.我们通过Linux gcc打开 main.i 文件(.i是预处理后的文件,三楼的人应该都知道。。给新手看),num 重复定义了。

这就算头文件重复包含带来的错误。

——————————————

既然存在这个错误我们应该怎么办???


所以今天学习一下如何防止这样的情况。

楼层更新[玫瑰][心碎]

注:本文来自我的博客:
https://www.fivk.cn/archives/324.html
代码可以到里面复制[玫瑰]
未经允许,禁止转载!
在博客评论有葫芦奖励[玫瑰][玫瑰]

8 Reply   |  Until 6个月前 | 4137 View

1797591992
发表于 6个月前

方式 1:#pragma once
用法:在所有头文件(.h 文件)上方编写 #pragma once
备注:图一已经运行成功,图二查看预处理后.i文件只有一个num定义。

评论列表

  • 加载数据中...

编写评论内容

1322846163
发表于 6个月前

方式 2:c/c++ 的标准指
格式:
——————————
#ifndef(宏)

#define(宏)

头文件(.c 文件)的具体内容

#endif
——————————
每一个头文件里面的内容全这样放,如果你可以看懂#ifndef,并且理解头文件实际就是把内容搬过来,楼主想,你应该很容易理解为什么这个方法可以。

图一是修改后我内容,图二是此时预处理后的.i文件

评论列表

  • 加载数据中...

编写评论内容

modu
发表于 6个月前

方法2的原理:#include 是直接将 xxx.h 的文本搬过来。下面两张图预处理后的结果都是一样的。

评论列表

  • 加载数据中...

编写评论内容

q4041121
发表于 6个月前

总结:
#pragma noce 编译器决定 强调的是文件名只能包含一次
#ifndef c/ c++ 标准制定 强调宏 而不是文件名

评论列表

  • 加载数据中...

编写评论内容

klmkq
发表于 6个月前

介绍的很通俗易懂,感谢楼主分享[玫瑰]

评论列表

  • 加载数据中...

编写评论内容

【HR】本当迷
发表于 6个月前

来占一个楼[滑稽]

评论列表

  • 加载数据中...

编写评论内容

143242
发表于 6个月前

[滑稽][滑稽]

评论列表

  • 加载数据中...

编写评论内容

長X
发表于 6个月前

非常好用[玫瑰]

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
程序耗时 0.0469秒 内存:1382KB