Tangaoo an embedded software engineer

第1篇 ttlib 编程风格

2021-03-13
tangoo

ttlib 是一个专注嵌入式的 C 库。

1. 为什么函数、类型前有 tt_ 前缀?

C 没有空间命名,而 ttlib 是以库的形式提供给使用者,为避免命名冲突,所以加 tt_ 前缀。tt_ 取自我的名字缩写,哈哈,刚好重复字母方便打字。

2. 命名规则

ttlib 采用小写加下划线形式,这个主要是个人习惯。

3. 头文件引用

采用完整路径引用。有点是提高编译速度,也不需要而外工程配置。为了减少头文件包含数量,每个模块都会有一个以该模块名命令的.h文件,用来提供该模块的所有接口,如 utils 模块中 utils.h 文件。

4. 常用类型

所有常用类型都重新 typedef 了,主要还是为避免冲突。

    typedef signed int                  tt_int_t;
    typedef unsigned int                tt_uint_t;
    typedef signed short                tt_short_t;
    typedef unsigned short              tt_ushort_t;
    typedef signed char                 tt_int8_t;
    typedef unsigned char               tt_uint8_t;
    typedef signed short                tt_int16_t;
    typedef unsigned short              tt_uint16_t;
    typedef signed int                  tt_int32_t;
    typedef unsigned int                tt_uint32_t;
    typedef signed long long            tt_int64_t;
    typedef unsigned long long          tt_uint64_t;
    typedef float                       tt_f32_t;
    typedef double                      tt_f64_t;
    typedef char                        tt_char_t;
    typedef tt_uint8_t                  tt_byte_t;
    typedef tt_int8_t                   tt_bool_t;
    typedef void                        tt_void_t;
    typedef tt_void_t *                 tt_pointer_t;
    typedef tt_void_t const *           tt_cpointer_t;
    typedef tt_pointer_t                tt_handle_t;

5. 结构体定义

结构体命名格式为 tt_xxx_ttt_xxx_ref_tref 表结构体指针,具体看下面例子就明白了。

    typedef union __tt_ipv4_t
    {
        // u32, little endian
        tt_uint32_t     u32;

        // u16
        tt_uint16_t     u16[2];

        // u8
        tt_uint8_t      u8[4];
    }tt_ipv4_t, *tt_ipv4_ref_t;

6. 注释风格

注释风格主要就是个人习惯,目标就是整齐清晰。另外我是用 vscode + vim 插件敲代码,可以设置 User Snippets,这样就可以把常用注释格式保存,方便使用。具体风格见代码。

7. 局部变量

局部变量没有在函数头一起定义,而是在使用处定义。

最后,具体风格看代码哈~


上一篇 SSH 笔记

下一篇 English Grammer

Comments

Content