OpenEdv-开源电子网

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

这些宏定义都是干啥用的?

[复制链接]

29

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2015-6-10
在线时间
1 小时
发表于 2015-7-29 12:50:40 | 显示全部楼层 |阅读模式
5金钱
在有些头文件中,经常能看到以下的宏定义,想问一下,这些宏定义都是干啥用的?
#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL) 
#define STM32F10X_HD
#endif

最佳答案

查看完整内容[请看2#楼]

楼主上个月不是问过这个问题了吗? http://www.openedv.com/posts/list/54563.htm
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2015-7-29 12:50:41 | 显示全部楼层
楼主上个月不是问过这个问题了吗?
http://www.openedv.com/posts/list/54563.htm
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复

使用道具 举报

4

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2015-7-16
在线时间
29 小时
发表于 2015-7-29 13:33:23 | 显示全部楼层
首先是#if,这个是预编译,如果满足条件才会编译,不满足条件就不编译,一直到#endif结束。最常见的就是 MDK,Options中C/C++下的  define STM32F10X_HD。

回复

使用道具 举报

29

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2015-6-10
在线时间
1 小时
 楼主| 发表于 2015-7-29 15:16:05 | 显示全部楼层
回复【2楼】ianhom:
---------------------------------
是有发过类似的贴子,但不是没弄得很明白,我想知道,为什么要这么做,未定义这些:STM32F10X_LD 、STM32F10X_LD_VL、STM32F10X_MD、 STM32F10X_MD_VL、 STM32F10X_HD、STM32F10X_HD_VL、STM32F10X_XL、STM32F10X_CL。就要定义STM32F10X_HD,定义的这个宏有什么作用?
回复

使用道具 举报

1

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-7-16
在线时间
3 小时
发表于 2015-7-30 10:04:34 | 显示全部楼层
回复【4楼】enginezhong:
---------------------------------
2楼已经回答了,编译开关
回复

使用道具 举报

29

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2015-6-10
在线时间
1 小时
 楼主| 发表于 2015-7-31 16:39:29 | 显示全部楼层
回复【5楼】joe_knight:
---------------------------------
我知道语句的意思,我想知道的是定义STM32F10X_HD这个宏有什么作用?具体举点例子来说名一下。
回复

使用道具 举报

1

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-7-16
在线时间
3 小时
发表于 2015-8-3 09:17:54 | 显示全部楼层
回复【6楼】enginezhong:
---------------------------------
你把2L的define设置清除,然后再编译看看,这些东西动手验证一下就行了
回复

使用道具 举报

29

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2015-6-10
在线时间
1 小时
 楼主| 发表于 2015-8-4 09:25:23 | 显示全部楼层
回复【7楼】joe_knight:
---------------------------------
会报错的,因为我这个是用来判断后定义Flash的也大小的。
#if defined (STM32F10X_HD) || defined (STM32F10X_HD_VL) || defined (STM32F10X_CL) || defined (STM32F10X_XL)
  #define FLASH_PAGE_SIZE    ((uint16_t)0x800)
#else
  #define FLASH_PAGE_SIZE    ((uint16_t)0x400)
#endif
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 22:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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