
# 开发指导
#### 功能
| 功能分类         | 接口名               | 描述         |
|:---|:---|:---|
| 使用C++特性的前置条件 | LOS_CppSystemInit | 初始化C++构造函数 |
   
![](https://support.huaweicloud.com/kernelmanual-LiteOS/public_sys-resources/note_3.0-zh-cn.png)
该函数有3个入参：
- 第一个参数：init_array段的起始地址。
- 第二个参数：init_array段的结束地址。
- 第三个参数：标记调用C++特性时的场景，包括BEFORE_SCATTER（在分散加载快速启动阶段使用C++特性）、AFTER_SCATTER（在分散加载非快速启动阶段使用C++特性）、NO_SCATTER（在非分散加载特性中使用C++特性，或者在分散加载中不使用C++特性）。
 
#### 开发流程
1. 通过make menuconfig使能C++支持。
   
   | 配置项                      | 含义         | 取值范围   | 默认值 | 依赖                      |
   |:---|:---|:---|:---|:---|
   | LOSCFG_KERNEL_CPPSUPPORT | C++特性的裁剪开关 | YES/NO | YES | LOSCFG_KERNEL_EXTKERNEL |
      
   
2. 使用C++特性之前，调用函数LOS_CppSystemInit，初始化C++构造函数。
3. C函数与C++函数混合调用。 在C++中调用C程序的函数，代码需加入C++包含的宏：
   ```
   #ifdef __cplusplus
   #if __cplusplus
   extern "C" {
   #endif /* __cplusplus */
   #endif /* __cplusplus */
   /* code */
   ...
   #ifdef __cplusplus
   #if __cplusplus
   }
   #endif /* __cplusplus */
   #endif /* __cplusplus */
   ```
   
 
