OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4504|回复: 16

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

[复制链接]

86

主题

417

帖子

0

精华

高级会员

Rank: 4

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

急需解释……!!!
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-2-25 23:21:03 | 显示全部楼层
too young too simple.
那你就不要加。等发生错误的时候就能够知道为什么要加了。
业余程序玩家。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-2-26 00:18:18 | 显示全部楼层
今天很多垃圾食品吃了,你都不会立马见马克思.
但是等你发现你要见马克思的时候,别人还在逛窑子,就晚了....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2013-2-5
在线时间
0 小时
发表于 2013-2-26 12:01:58 | 显示全部楼层
回复【楼主位】可乐虎:
---------------------------------
我也不懂背后的原因,我也只是照写,囫囵吞枣了。。现在是感性认识阶段,估计等过一段时间了,就能明白是什么意思了
回复 支持 反对

使用道具 举报

9

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2013-2-5
在线时间
0 小时
发表于 2013-2-26 12:02:52 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
我能说我没看到原子哥的话么
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-2-26 12:31:35 | 显示全部楼层
可以无视,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-2-26 19:58:52 | 显示全部楼层

难道代码这种东西会像病毒样缓慢发效吗?不至于吧!!应该是 错就错 对就对啊,不过我貌似想针对这个问题搞出个错误 都难啊!有能出错的例子吗??

乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-2-26 20:18:05 | 显示全部楼层
回复【7楼】可乐虎:
---------------------------------
上传工程,我给你改。
业余程序玩家。
回复 支持 反对

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2244
金钱
2244
注册时间
2010-12-16
在线时间
201 小时
发表于 2013-2-26 20:21:06 | 显示全部楼层
设有头文件r,s,t,
c文件u,
其中s,t里#include "r.h"
u里#include "s.h"和#include "t.h"

然后,重点在r.h,
在里面增加宏定义#define TEST (1)
看有什么结果,加上LZ的包含后又有什么结果.
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-2-26 21:38:44 | 显示全部楼层
就用跑马灯的例程吧 帮改改 去掉那些语句 看能否搞出个错误来………………

01-跑马灯.rar

22.08 KB, 下载次数: 182

乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-2-26 21:39:44 | 显示全部楼层
回复【8楼】ofourme:
---------------------------------还在吗?
我QQ1982211588
随时讨教哦!!
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

34

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
285
金钱
285
注册时间
2012-9-10
在线时间
5 小时
发表于 2013-2-26 22:26:16 | 显示全部楼层
人才啊
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-2-27 12:07:01 | 显示全部楼层
重复宏定义没有警告确实比较意外。
给你想个循环包含的吧:增加test.h,test.h include sys.h,sys.h include test.h。

01-跑马灯.rar

17.57 KB, 下载次数: 175

业余程序玩家。
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-2-27 14:59:15 | 显示全部楼层
呵呵 谢了 这个确实会报错:..\USER\test.h(4): error:  #3: #include file "..\SYSTEM\sys\sys.h" includes itself

但这个给人有点过于没事找事的感觉啊!!回复【13楼】canglang:
---------------------------------
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

lichaowyyx 该用户已被删除
发表于 2017-4-6 16:57:03 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2015-8-25
在线时间
1035 小时
发表于 2017-4-6 17:52:23 | 显示全部楼层
从51到DSP到32,一直都是这样子写头文件的,从没有觉得有问题啊
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复 支持 反对

使用道具 举报

1

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2019-12-5
在线时间
15 小时
发表于 2019-12-6 21:21:04 | 显示全部楼层
szczyb1314 发表于 2017-4-6 17:52
从51到DSP到32,一直都是这样子写头文件的,从没有觉得有问题啊

51那有这样写头文件的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 12:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表