OpenEdv-开源电子网

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

千古难题!

[复制链接]

15

主题

23

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-10-20
在线时间
9 小时
发表于 2018-10-23 19:23:10 | 显示全部楼层 |阅读模式
2金钱
各位大佬们你们好!
图1是咱们库函数带的源代码
图2是我自己编写的 为什么不能替换?如果不用#define 形式定义变量 应该怎么定义呢  希望大佬们不吝赐教!
1.png
2.png

最佳答案

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

首先看这些宏用在什么地方 [mw_shl_code=c,true] if(key) { switch(key) { case WKUP_PRES: //控制蜂鸣器 BEEP=!BEEP; break; ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-10-23 19:23:11 | 显示全部楼层
本帖最后由 秋天 于 2018-10-24 14:15 编辑

首先看这些宏用在什么地方
[mw_shl_code=c,true]        if(key)
                {                                                   
                        switch(key)
                        {                                 
                                case WKUP_PRES:        //控制蜂鸣器
                                        BEEP=!BEEP;
                                        break;
                                case KEY2_PRES:        //控制LED0翻转
                                        LED0=!LED0;
                                        break;
                                case KEY1_PRES:        //控制LED1翻转         
                                        LED1=!LED1;
                                        break;
                                case KEY0_PRES:        //同时控制LED0,LED1翻转
                                        LED0=!LED0;
                                        LED1=!LED1;
                                        break;
                        }
                }else delay_ms(10); [/mw_shl_code]

查查switch用法 case后面应该用什么?
case 后的常量指的是常量表达式,它必须是整数类型。在一个特定的 switch 语句中,每个 case 常量都必须具有独一无二的值,不可以重复。但是 switch 语句可以包含多个 case 标签。
而你呢?????却把它弄成变量!!!!
Loto虚拟示波器 官方qq群: 706769836 https://shop296209296.taobao.com/shop/view_shop.htm?tracelog=t
回复

使用道具 举报

15

主题

23

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-10-20
在线时间
9 小时
 楼主| 发表于 2018-10-23 19:23:44 | 显示全部楼层
这是咱们的按键实验
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-10-23 19:40:28 | 显示全部楼层
不能那样用。宏不能当初变量被赋值
回复

使用道具 举报

15

主题

23

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-10-20
在线时间
9 小时
 楼主| 发表于 2018-10-23 19:47:31 | 显示全部楼层
peng1554 发表于 2018-10-23 19:40
不能那样用。宏不能当初变量被赋值

我直接把它当成普通变量来定义不可以吗?
回复

使用道具 举报

0

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-8-23
在线时间
23 小时
发表于 2018-10-23 20:22:13 | 显示全部楼层
这标题。。UC看多了吧
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
发表于 2018-10-23 21:38:28 | 显示全部楼层
我是一名新手 发表于 2018-10-23 19:47
我直接把它当成普通变量来定义不可以吗?

如果非要这样,
应该也没有问题。

只不过这两种意义截然不同,
原作是宏定义,符号替换;
后者是定义变量并赋值
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-10-23
在线时间
2 小时
发表于 2018-10-23 23:58:11 | 显示全部楼层
1: 你遇到了什么报错?
2: int是带符号的, 你试试 u32_t ?
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-10-24 08:13:15 | 显示全部楼层
万一你存储键值的变量是uchar呢
你这样会报错吗?报了啥错?
猪猪熊呢?
回复

使用道具 举报

0

主题

109

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2018-9-2
在线时间
8 小时
发表于 2018-10-24 08:21:42 | 显示全部楼层
求大神指教,谢谢各位了
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-10-24 08:27:59 | 显示全部楼层
试试用常量来定义,c11中就建议不使用宏而是使用常量。const int ....
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17786
金钱
17786
注册时间
2018-3-3
在线时间
523 小时
发表于 2018-10-24 10:19:16 | 显示全部楼层
你的宏定义是一个常量   ,不能给常量赋值的 。
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2018-10-28 15:20:35 | 显示全部楼层
本帖最后由 candylife9 于 2018-10-28 15:23 编辑

我看楼上的各位都应该去看看C语言基础了。你这错误是因为变量名不能以数字开头。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 05:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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