各位注意了:关于#ifndef… #define… #endif的问题,求解释!!!

2019-08-22 15:58发布

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

急需解释……!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
ofourme
1楼-- · 2019-08-23 14:56
回复【7楼】可乐虎:
---------------------------------
上传工程,我给你改。
shihantu
2楼-- · 2019-08-23 19:35
设有头文件r,s,t,
c文件u,
其中s,t里#include "r.h"
u里#include "s.h"和#include "t.h"

然后,重点在r.h,
在里面增加宏定义#define TEST (1)
看有什么结果,加上LZ的包含后又有什么结果.
可乐虎
3楼-- · 2019-08-23 22:43
就用跑马灯的例程吧 帮改改 去掉那些语句 看能否搞出个错误来………………
可乐虎
4楼-- · 2019-08-23 23:42
回复【8楼】ofourme:
---------------------------------还在吗?
我QQ1982211588
随时讨教哦!!
canglang
5楼-- · 2019-08-24 04:57
 精彩回答 2  元偷偷看……
ofourme
6楼-- · 2019-08-24 05:05
重复宏定义没有警告确实比较意外。
给你想个循环包含的吧:增加test.h,test.h include sys.h,sys.h include test.h。

一周热门 更多>