c - 将指针的地址而不是指针作为函数参数传递
问题描述
所以我试图理解传递给这个函数的参数。
第二个参数接受一个指针
BaseType_t xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
那么如何传递一个指针的地址是合法的呢?
struct AMessage *pxMessage;
pxMessage = & xMessage;
xQueueGenericSend( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0, queueSEND_TO_BACK );
参考: http ://web.ist.utl.pt/~ist11993/FRTOS-API/group___queue_management.html#xQueueGenericSend
解决方案
freeRTOS 队列函数传递消息。如果消息是您需要传递对它的引用的指针。然后这个引用被取消引用。
在这种情况下,指向消息的指针将被排队 - 而不是消息本身。
它的工作原理与 memcpy 完全相同。memcpy 参数void *
和任何指针都可以传递给这个函数。
推荐阅读
- c++ - 如何正确打印内存中变量的地址?
- c# - Autofac - 获取其接口实现特定接口的类的所有实例
- powerbi - Power BI Desktop - 一张显示最近发票超过 100 万美元的卡片
- ruby-on-rails - 通过匹配条件从哈希数组中获取电子邮件作为数组
- amazon-web-services - 使用 Brave 浏览器从控制台上传 S3 失败
- android - React Native嵌套的水平ScrollView在android上不起作用
- ios - iPhone X 上的 iOS 12 是否在 Metal 之上渲染 OpenGL ES?有什么办法可以避免吗?
- maven - Maven项目中的TestNg类路径设置
- css - Angular scss 不适用于 ngx-datatable
- php - WP查询代码显示独特的div类和WP函数