模块化c++团队产品开发接口头文件标准: 1.c风格需要声明 exterc? 2.函数调用约定 声明 3.放置多个团队间冲突--函数名+前缀 一般是:公司简称+产品简称+模块简称 例如平板日志接口: exter "C" __stdcall CDZSPADLOGRES CDZSPADLOG_Init( const char *pStrFilePathName ); 4.提供日志回调以便于产品集成做问题详细跟踪 5.高并发或者容易死锁等模块需要外部指针传入运行节点跟踪,当模块内部假死的时候 外部进行监控打印 6.在进程运行期间 通过实时参数设置 改变运行逻辑--达到调试目的-----提供调试参数设置接口 7.struct接口和校验 8.struct接口预留字段 9.提供该模块版本打印接口 10.struct内存分配4字节对齐 11.头文件版本需要标记:(1)作者 (2)时间 (3)概述 (4)依赖第三方库说明 (5)接口调用流程说明 (6)头文件版本信息 12.接口不要包含任何其它头文件 如boost stdio strlib string qt等 都非法 原因举例: (1)std在不同平台不同版本不同库 有实现差异? (2)c++11的,包含了c++17 特性,但是集成环境员是c++03 或者c++98 无法拿来集成 (3)像这种结构 ?? ?struct MYSTRUCT ?? ?{ ?? ??? ??? ? ?int ?a; ?? ??? ??? ? std::string str; ?? ??? ??? ? ?char c; ?? ?}; 这种结构在不同版本 字节大小都不一样,接口会调用失败
13.函数参数必要时const 声明 14.枚举强指定值 15.外部用不到的数据结构和接口一律不提供 要用的东西 都区分:你内部要用的结构体、对外提供的结构体? 要清晰划分这两部分 不用借口说 对外提供的接口内部要用 所以必须包含xxx 需要剥离 16.不要用long long这种结构 ?在不同平台数据差距大
|