我用的keil-mdk环境+mdk自带的rt_thread_Nano系统,且开发语言改成cpp。
其他没什么大问题,就是rt_thread_init函数中第三个变量为void (*entry)(void *parameter)
,而cpp的类函数由于有隐藏入参this,无法作为该变量传入。
想要传入,只能描述函数类型为static,但是很多函数不方便设为static,想问下还有没有其他的解决方法?
以及,rt_thread studio可不可以自行添加MCU?我使用AT32F413芯片,studio里没有呀。
我给类留了个c函数指针接口,把这个指针传给rt_thread_init。再把类里的线程执行函数做成public的,然后找了个c源文件写了个c函数把类函数封进去,再把c函数的地址传给init函数勉强实现了功能。
就是总感觉脱裤子放屁… 不知道啥时候rt_thread_init函数能支持c++。
@fox0815 正常做法就是这样的,因为 rtt 是 c 实现的,其实用个静态函数简单些。
什么时候 rtt 变成 c++ 实现了,就没这么多事儿。但是可能不会了
@出出啊
我现在换了个写法,cpp类里边写一个static函数,带一个
void*
类型形参。rtt的timer_init函数中除了传入static函数指针,还传入要调用函数类的地址。
然后在static函数中执行
((类名 *)
传入参数类地址)->
需要调用的cpp函数。这样全部工作都能在cpp文件中完成,不需要额外的c文件。
@fox0815
说到底还是用的类静态成员函数