在RT-Thread中使用C++编程
自RT-Thread 2.0.x版本开始,RT-Thread引入了对C++语言编程的支持,主要包括C++系统底层的支撑。
要在RT-Thread中使用C++语言编程,需要在rtconfig.h配置头文件中定义:
#define RT_USING_CPLUSPLUS
一般的,当使用C++语言编程时,C++代码默认需要底层C运行库的支持,所以建议打开C运行库支持:
#define RT_USING_LIBC
当导入RT_USING_CPLUSPLUS配置时,将加入components\cplusplus目录下的组件代码,主体在crt.h/.cpp等文件中,其中包括了C++中对象创建和销毁的操作符:new、delete,以及__cxa_pure_virtual实现。__cxa_pure_virtual函数会再调用一个未实现的纯虚方法时被调用。
C++中的对象new、delete操作符号按照RT-Thread的规则,以rt_malloc、rt_free的方式来分配和释放内存。
另外,当在程序中定义了全局变量时,全局变量需要提前进行初始化,在RT-Thread/C++版本中,是以cplusplus_system_init初始化函数进行实现,并导出到组件这一级的初始化序列中。<所以当你在RT-Thread/C++代码中使用到C++全局对象时,需要主意它的初始化阶段,不要在全局对象中过多引用底层代码>
目前RT-Thread/C++可以支持模板,异常则需要根据编译器实现的底层C++接口做一定的调整补充(例如当使用GCC时,stdc++需要的
__throw_bad_alloc/__throw_bad_function_call/__throw_length_error/__throw_out_of_range
接口函数)。而RTTI,则不建议使用。