OpenEdv-开源电子网

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

求教:c语言 定义一个宏函数,根据传入的a值,switch case 执行不同的函数

[复制链接]

8

主题

206

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-4-6
在线时间
234 小时
发表于 2018-10-30 17:34:10 | 显示全部楼层 |阅读模式
10金钱
如题:
TIM图片20181030172550.png TIM图片20181030172529.png
本想根据传入的值,执行相应的宏定义,但是编译出错,提示“ error:  #29: expected an expression (期望为一个表达式)”
求大佬给一个解决方案。 感谢各位大佬。。



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2018-10-30
在线时间
32 小时
发表于 2018-10-30 18:05:49 | 显示全部楼层
期望为一个表达值是因为你没有条件来进入case里面,无法给a赋值比如你设置的123456啥的,你需要加一个for会好一点,比如   if(某某)
{a=0;}if(另一个判断式)
{a=1;}
发怒是用别人的错误来惩罚自己
烦恼是用自己的过失折磨自己
后悔是用无奈的往事来摧残自己
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7571
金钱
7571
注册时间
2016-11-30
在线时间
643 小时
发表于 2018-10-30 18:38:37 | 显示全部楼层
PGin()函数有问题吧
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
发表于 2018-10-30 19:15:42 | 显示全部楼层
宏定义成这样不头大么?
一句就可以达到你要的:
#define Cs_In(a)     PGin(16-a)
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

4

主题

380

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3088
金钱
3088
注册时间
2015-10-17
在线时间
320 小时
发表于 2018-10-31 08:51:53 | 显示全部楼层
本帖最后由 hgr211 于 2018-10-31 08:53 编辑

多此一举。楼上正解
回复

使用道具 举报

0

主题

31

帖子

0

精华

高级会员

Rank: 4

积分
535
金钱
535
注册时间
2018-8-2
在线时间
54 小时
发表于 2018-10-31 09:12:17 | 显示全部楼层
楼主想表达的意思是兼容性更好一点,万一哪天改板了,IO口定义变了,只需要改一下IO口的定义引脚就可以了,不需要修改这个宏,而且楼主的宏还有一定的防错处理,简单的 #define Cs_In(a)     PGin(16-a) 并不能完全替代这个宏。

我个人觉得用 if else 代替 switch 好一点

回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-10-31 09:42:11 | 显示全部楼层
这个要看你是怎么使用这个宏的,可能的情况是使用时出错。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 10:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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