OpenEdv-开源电子网

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

FreeRTOS的一段宏定义的疑问

[复制链接]

32

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2022-9-21
在线时间
14 小时
发表于 2022-11-27 12:12:33 | 显示全部楼层 |阅读模式
1金钱
在看FreeRTOS的task.c的代码时,发现了这样一段代码:/* 将任务添加到就绪列表 */                                    
#define prvAddTaskToReadyList( pxTCB )                                                                                                                                   \
        taskRECORD_READY_PRIORITY( ( pxTCB )->uxPriority );                                                                                                   \
        vListInsertEnd( &( pxReadyTasksLists[ ( pxTCB )->uxPriority ] ), &( ( pxTCB )->xStateListItem ) );                                        \



这是什么写法?从来没见过?宏定义有分号吗?这三行是一个宏定义吗?还是最后一行是一句单独的函数?
2022-11-27_120757.png

最佳答案

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

去掉换行符就是这样 #define prvAddTaskToReadyList( pxTCB ) askRECORD_READY_PRIORITY( ( pxTCB )->uxPriority );vListInsertEnd( &( pxReadyTasksLists[ ( pxTCB )->uxPriority ] ), &( ( pxTCB )->xStateListItem ) ); 后面两句是连续的。你把后面看做是一个整体。这样明白?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

117

帖子

0

精华

高级会员

Rank: 4

积分
559
金钱
559
注册时间
2018-10-3
在线时间
107 小时
发表于 2022-11-27 12:12:34 | 显示全部楼层
去掉换行符就是这样
#define prvAddTaskToReadyList( pxTCB )     askRECORD_READY_PRIORITY( ( pxTCB )->uxPriority );vListInsertEnd( &( pxReadyTasksLists[ ( pxTCB )->uxPriority ] ), &( ( pxTCB )->xStateListItem ) );
后面两句是连续的。你把后面看做是一个整体。这样明白?
回复

使用道具 举报

12

主题

156

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2557
金钱
2557
注册时间
2017-12-16
在线时间
188 小时
发表于 2022-11-27 14:27:09 | 显示全部楼层
本帖最后由 sfd123 于 2022-11-27 14:28 编辑

“ \”  未完待续!
宏定义 就是  直接替换!啥都可以,别说“;”了!哥们,基础还要再打一打啊!
回复

使用道具 举报

32

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2022-9-21
在线时间
14 小时
 楼主| 发表于 2022-11-27 16:33:45 | 显示全部楼层
sfd123 发表于 2022-11-27 14:27
“ \”  未完待续!
宏定义 就是  直接替换!啥都可以,别说“;”了!哥们,基础还要再打一打啊!

那这三行是啥意思?\连接两行的见得多,这三行是谁替换谁呢?第二行替换第三行,然后第一行替换第二行?
回复

使用道具 举报

3

主题

800

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3775
金钱
3775
注册时间
2017-3-7
在线时间
1645 小时
发表于 2022-11-28 08:03:52 | 显示全部楼层
。。。这三行谁都不替换谁,他们一起替换前面的宏
回复

使用道具 举报

0

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2019-12-31
在线时间
28 小时
发表于 2022-11-28 17:13:26 | 显示全部楼层
我感觉后面的分号是有问题的
回复

使用道具 举报

70

主题

6698

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12692
金钱
12692
注册时间
2012-11-26
在线时间
3711 小时
发表于 2022-11-28 19:31:12 | 显示全部楼层
caoenq 发表于 2022-11-28 17:13
我感觉后面的分号是有问题的

有啥问题?

一套连环掌而已
学无止境
回复

使用道具 举报

32

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2022-9-21
在线时间
14 小时
 楼主| 发表于 2022-11-29 15:23:45 | 显示全部楼层
wklhwkl 发表于 2022-11-27 23:35
去掉换行符就是这样
#define prvAddTaskToReadyList( pxTCB )     askRECORD_READY_PRIORITY( ( pxTCB )-> ...

明白了,原来是这么回事
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 21:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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