C++做为目前使用最普遍的编程语言之一,支持类、封装、重载等特性,是在C语言基础上开发的一种面向对象的编程语言。算法
STL(Standard Template Library)标准模板库,是一些“容器”的集合,也是算法和其余一些组件的集合。其目的是标准化组件,使用标准化组件后就能够不用从新开发,直接使用现成的组件。编程
功能分类 | 接口名 | 描述 |
---|---|---|
使用C++特性的前置条件 | LOS_CppSystemInit | C++构造函数初始化 |
使用C++特性以前,须要调用函数LOS_CppSystemInit,实现C ++ 构造函数初始化。app
其中被初始化的构造函数存在init_array这个段中,段区间经过变量__init_array_start__、 __init_array_end__传递。编程语言
因为在分散加载应用场景下, C++ 初始化中涉及到的相关代码、数据段加载的时机会有所不一样,因此在用户开启和不开启分散加载特性这两种状况下, C++ 初始化函数LOS_CppSystemInit的调用有所不一样。函数
LOS_CppSystemInit((unsigned long)&__init_array_start__, (unsigned long)&__init_array_end__,BEFORE_SCATTER);
参数 | 参数说明 |
---|---|
init_array_start | 起始段 |
init_array_end | 结束段 |
BEFORE_SCATTER | 表示用户是在分散加载快速启动阶段调用的LOS_CppSystemInit |
在分散加载的非快速启动阶段再以AFTER_SCATTER参数以下调用LOS_CppSystemInit:code
LOS_CppSystemInit((unsigned long)&__init_array_start__, (unsigned long)&__init_array_end__, AFTER_SCATTER);
参数 | 参数说明 |
---|---|
init_array_start | 起始段 |
init_array_end | 结束段 |
AFTER_SCATTER | 表示用户是在分散加载非快速启动阶段调用的LOS_CppSystemInit |
LOS_CppSystemInit((unsigned long)&__init_array_start__, (unsigned long)&__init_array_end__,BEFORE_SCATTER); LOS_CppSystemInit((unsigned long)&__init_array_start__, (unsigned long)&__init_array_end__,AFTER_SCATTER);
或者以NO_SCATTER为参数调用一次LOS_CppSystemInit:对象
LOS_CppSystemInit((unsigned long)&__init_array_start__, (unsigned long)&__init_array_end__,NO_SCATTER);
在C++中调用C程序的函数,注意在声明该函数的时候增长以下语句:接口
extern "C"开发
在代码初始化中,进行C++ 构造函数初始化,进而让程序能够使用C++特性。因为此处使用分散加载特性,因此需两次调用LOS_CppSystemInitflash
void app_init(void) { ...... /* 分散加载快速启动阶段C++初始化 */ LOS_CppSystemInit((UINT32)&__init_array_start__, (UINT32)&__init_array_end__, BEFORE_SCATTER); /* 分散加载 */ LOS_ScatterLoad(0x100000, flash_read, NAND_READ_ALIGN_SIZE); /* 分散加载非快速启动阶段C++初始化 */ LOS_CppSystemInit((UINT32)&__init_array_start__, (UINT32)&__init_array_end__, AFTER_SCATTER); ...... }