完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在thread.c的275行用了RT_OBJECT_HOOK_CALL这么一个宏
RT_OBJECT_HOOK_CALL(rt_scheduler_hook, (from_thread, to_thread)); 其中用到了rt_scheduler_hook这么一个函数指针 static void (*rt_scheduler_hook)(struct rt_thread *from, struct rt_thread *to); 这是指针的声明。 我的疑问是在这个宏调用之前没看到关于rt_scheduler_hook这个指针的初始化就调用了,不是野指针吗,没看懂。。。。 另外请帮忙解释一下钩子应该怎么用,谢谢 |
|
相关推荐
6个回答
|
|
您可以展开一下 RT_OBJECT_HOOK_CALL 的实现,肯定有空判断。
|
|
|
|
对的,这个指针并没有“初始化”。这个是未初始化的变量,对于未初始化的变量(ZI/bss段),系统在启动时会默认清零。所以这里我们依然沿用这样的方式
|
|
|
|
展开之后的形式是:
do { if(rt_scheduler_hook != RT_NULL) { rt_scheduler_hook(from_thread, to_thread); } } while(0) RT_NULL是个空指针,如果rt_scheduler_hook没有初始化是个野指针的话,不知道指向哪里,那应该肯定不会等于RT_NULL,程序就继续往下执行了,那这个逻辑就说不通了,不知道我的理解对不对。。 |
|
|
|
|
|
|
|
非常感谢,我明白了。。
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AI模型部署边缘设备的奇妙之旅:边缘端设备的局域网视频流传输方案
1572 浏览 0 评论
1448 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
6686 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1847 浏览 0 评论
3192 浏览 0 评论
77528 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-16 12:11 , Processed in 0.786843 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号