[STM8] 关于 #define 用法问题

[复制链接]
2348|11
 楼主| KuMo_2011 发表于 2014-6-11 10:48 | 显示全部楼层 |阅读模式
说道 #define 我只知道它是宏定义
我在课堂上只学过 #define pi 3.14这种用法 就是把pi替换成3.14
然而在学习 stm8有关程序是发现#defined还有  #define STM8S105 这种用法
向大家请教一下,这是什么用法,作用、意义又是什么呢?
ticomi 发表于 2014-6-11 11:13 | 显示全部楼层
就是宏定义,#define STM8S105 就是定义了这个,如果在编译的时候判断是否定义了这个就可以确定是否需要编译与之相对应的代码,很适合多MCU平台的编译工作!
mmuuss586 发表于 2014-6-11 11:16 | 显示全部楼层

楼上正解
 楼主| KuMo_2011 发表于 2014-6-11 13:27 | 显示全部楼层
ticomi 发表于 2014-6-11 11:13
就是宏定义,#define STM8S105 就是定义了这个,如果在编译的时候判断是否定义了这个就可以确定是否需要编 ...

那“#define STM8S105” 和 “#define pi 3.14”的用法是不是不一样
C语言只学了些皮毛,不太明白#defined的用法
我以前一直认为他的作用类似替换,就如“#define pi 3.14”
“#define STM8S105”的用法不是替换吧?
求指教,谢谢:)
 楼主| KuMo_2011 发表于 2014-6-11 13:28 | 显示全部楼层
mmuuss586 发表于 2014-6-11 11:16
楼上正解

那“#define STM8S105” 和 “#define pi 3.14”的用法是不是不一样
C语言只学了些皮毛,不太明白#defined的用法
我以前一直认为他的作用类似替换,就如“#define pi 3.14”
“#define STM8S105”的用法不是替换吧?
求指教,谢谢:)
mmuuss586 发表于 2014-6-11 13:48 | 显示全部楼层
#define pi 3.14:3.14可以用PI替换,程序里面用到3,14的地方,用PI就可以了;

#define STM8S105:定义了STM8S105
ticomi 发表于 2014-6-11 13:55 | 显示全部楼层
KuMo_2011 发表于 2014-6-11 13:28
那“#define STM8S105” 和 “#define pi 3.14”的用法是不是不一样
C语言只学了些皮毛,不太明白#defined ...

建议你看下C方面的书籍,这个不是一下子可以说明白的。重点看下编译方面的就会理解的快一些的。
#define PI 3.14,要写成#define PI (3.14),这样比较合理的。

#define STM8S105 是定义了STM8S105 如果遇到#ifndef STM8S105是就会为假,因为已经定义了,这用于编译阶段而不是执行阶段。
 楼主| KuMo_2011 发表于 2014-6-11 15:19 | 显示全部楼层
ticomi 发表于 2014-6-11 13:55
建议你看下C方面的书籍,这个不是一下子可以说明白的。重点看下编译方面的就会理解的快一些的。
#define  ...

豁然开朗,解释的恰到好处。谢啦:)
 楼主| KuMo_2011 发表于 2014-6-11 15:19 | 显示全部楼层
mmuuss586 发表于 2014-6-11 13:48
#define pi 3.14:3.14可以用PI替换,程序里面用到3,14的地方,用PI就可以了;

#define STM8S105:定义了S ...

明白了,谢谢:)
江枫渔火 发表于 2014-6-11 20:29 | 显示全部楼层
是一样的意思,只不过定义了某某为空。为空也可以替换。但空值的宏定义一般是用来判断定义了没定义,而不是定义了什么。
KC_CEC 发表于 2014-6-12 09:46 | 显示全部楼层
用define我习惯多用括号,这样不会逻辑混乱
广轻电气091 发表于 2014-7-7 10:31 | 显示全部楼层
KC_CEC 发表于 2014-6-12 09:46
用define我习惯多用括号,这样不会逻辑混乱

这个习惯不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

45

主题

494

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部