打印
[技术问答]

关于#ifndef… #define… #endif的问题,求解释

[复制链接]
366|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kiwis66|  楼主 | 2022-9-4 20:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



在我第一次接触#ifndef… #define… #endif的时候,就不停的有人告诉我,在写头文件时要加上这些语句,否则当此头文件被多个源文件包含时,编译时会产生重定义的错误!!!
然后,我每次就乖乖的加上了,确实没产生过重定义的错误。
但天生喜欢探索、敢于尝试的我今天偏不信邪就在外部中断实验中,把sys.h文件里的 #ifndef… #define… #endif 语句注释了,然后在MDK里编译……
结果是没发生任何错误!!奇怪了……怎么回事呢??


使用特权

评论回复
沙发
skyred| | 2022-9-4 21:01 | 只看该作者
C语言
条件编译了解一下

使用特权

评论回复
板凳
软核硬核| | 2022-9-5 13:28 | 只看该作者
你要看有哪些地方调用了【sys.h】头文件,如果只有一个地方那不报错也正常。

使用特权

评论回复
地板
软核硬核| | 2022-9-5 13:29 | 只看该作者
如果不加【#ifndef… #define… #endif】当一个头文件被两个源文件调用,有可能会出现重复定义的报错!

使用特权

评论回复
5
软核硬核| | 2022-9-5 13:30 | 只看该作者
你首先要知道C语言的编译流程,再去学习一下这些条件编译语句,然后你就会豁然开朗了~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

189

主题

1183

帖子

2

粉丝