OpenEdv-开源电子网

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

几个关于C代码的问题

[复制链接]

29

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-8-3
在线时间
48 小时
发表于 2018-10-22 18:25:21 | 显示全部楼层 |阅读模式
1金钱
1、
#define PRIVILEGED_FUNCTION
````````````````
````````````````
#if( configSUPPORT_STATIC_ALLOCATION == 1 )
        QueueHandle_t    xQueueGenericCreateStatic( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, StaticQueue_t *pxStaticQueue, const uint8_t ucQueueType )    PRIVILEGED_FUNCTION;
#endif

中间的这个xQueueGenericCreateStatic应该是个函数声明吧(QueueHandle_t就是一个函数返回值类型)?为什么声明最后加一个PRIVILEGED_FUNCTION?没见过这种,请问这算神马?

2、
一个宏定义成一个函数
#define xQueueCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxQueueBuffer )                  xQueueGenericCreateStatic( ( uxQueueLength ), ( uxItemSize ), ( pucQueueStorage ), ( pxQueueBuffer ), ( queueQUEUE_TYPE_BASE ) )
请问后面这个函数每一个参数必须要用括号括起来吗?感觉是没必要的。

3、
#ifndef mtCOVERAGE_TEST_MARKER
        #define mtCOVERAGE_TEST_MARKER()   //这里就是定义了一个空的东西,长得像个函数似的
#endif
·············
·············但是为什么程序里会多次出现这个空的宏定义呢?请问这样有什么作用吗?
               比如
                else
                {
                        mtCOVERAGE_TEST_MARKER();
                }

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

使用道具 举报

29

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-8-3
在线时间
48 小时
 楼主| 发表于 2018-10-22 18:32:00 | 显示全部楼层
本帖最后由 三十岁大叔 于 2018-10-22 18:35 编辑

4、#define listLIST_IS_EMPTY( pxList )        ( ( BaseType_t ) ( ( pxList )->uxNumberOfItems == ( UBaseType_t ) 0 ) ) 我只能看出来这是个宏定义,请问这里会有“返回值”吗?比如 if (  listLIST_IS_EMPTY( &某某 ) ==0  )   这个宏定义的值难道是  ( pxList )->uxNumberOfItems   ?  那不就一定是0吗,为什么还要有这个if判断?
回复

使用道具 举报

29

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-8-3
在线时间
48 小时
 楼主| 发表于 2018-10-22 19:07:33 | 显示全部楼层
o ,第三个我知道了,这是暂时不需要else,为了以后程序添加一些控制语句预留的地方。
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-10-22 19:17:26 | 显示全部楼层
一) PRIVILEGED_FUNCTION是另一个宏,用作定位section的
二)不是必要的
三)知道就不多说了
四)这宏只返回一个Bool值, 不用if怎么行? 反倒是宏之后的==0是可以不要
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-23 10:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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