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); ...... }