在我第一次接触#ifndef… #define… #endif的时候,就不停的有人告诉我,在写头文件时要加上这些语句,否则当此头文件被多个源文件包含时,编译时会产生重定义的错误!!!
然后,我每次就乖乖的加上了,确实没产生过重定义的错误。
但天生喜欢探索、敢于尝试的我今天偏不信邪就在外部中断实验中,把sys.h文件里的 #ifndef… #define… #endif 语句注释了,然后在MDK里编译……
结果是没发生任何错误!!奇怪了……怎么回事呢??
结论:我发现那么多人相信的事情,可能是一种迷信,呵呵!!
急需解释……!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
上传工程,我给你改。
c文件u,
其中s,t里#include "r.h"
u里#include "s.h"和#include "t.h"
然后,重点在r.h,
在里面增加宏定义#define TEST (1)
看有什么结果,加上LZ的包含后又有什么结果.
---------------------------------还在吗?
我QQ1982211588
随时讨教哦!!
给你想个循环包含的吧:增加test.h,test.h include sys.h,sys.h include test.h。
一周热门 更多>