19

阿木币

0

精华

11 小时

在线时间

应届白菜

Rank: 1

发表于 2019-4-9 11:26:09 6691 浏览 2 回复

找不到hal.console->available()的函数体

最近在阅读APM的源码,产生了如题所示的疑惑,还请论坛中的大佬能指点一下



    • 语句位置:INS_generic.cpp
    • 已知信息:
      • console类型:AP_HAL::UARTDriver*
      • 类的派生关系:Stream→BetterStream→UARTDriver


    • 选中available后,context窗口显示了AP:HAL::Stream:public AP::Print类中的纯虚函数:available
    • 按我的理解,函数体应该在Stream的子类中重写,不过依照继承关系,在BetterStream以及UARTDriver中都没看到对available的重定义。而且也没有发现UARTDriver有任何的派生类

所以直到最后也没发现avialable是怎么实现的

PS:我觉得可能是UARTDriver有派生类但是我没找到,因为看到该类中有很多纯虚函数,而按我理解纯虚函数需要在派生类中去实现。奈何我使用了全局搜索、Relation窗口试图找到UARTDriver派生了什么类,却完全没有找到


扫一扫浏览分享
回复

使用道具 举报

19

阿木币

0

精华

11 小时

在线时间

应届白菜

Rank: 1

 楼主| 发表于 2019-4-10 11:22:39
自问自答一下吧,昨天在阿木社区提问的同时,也去了APM论坛提问(英文提问真难受┭┮﹏┭┮,多亏了在线翻译{:4_91:})   
很幸运的是有两位大佬提供了宝贵的思路,对于这个问题懂一点点了
现在暂时把重要的图片、链接贴在这里,等之后理解深点了,再来总结吧
https://discuss.ardupilot.org/t/learning-the-code-a-failure-to-find-the-function-body-of-hal-console-available/40874

5LJJX[C`()UC_MJBP03JB55.png T05IS_]O]1WP5W3K[ZR`)S8.png


回复 点赞 2

使用道具 举报

52

阿木币

1

精华

2400 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

发表于 2019-4-10 12:22:03
赞学习总结能力~~~{:4_114:}
回复 点赞

使用道具 举报

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

本版积分规则

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