代码编程规范-扩展(其他建议)
扫描二维码
随时随地手机看文章
前言
这篇重点介绍一下代码编程规范的扩展要求-其他的建议
要求
【规范1】变量的类型定义建议统一采用uint8_t、uint16_t、int8_t等定义
根据8位、16位和32位等机器的不同,int等类型所占的字节不一样,如果采用int等方式定义,那么在不同位机器移植代码时就会出现很多问题
为了提高代码的移植性,一般采用uint8_t、uint16_t、int8_t等定义的方式,它是通过typedef定义的,而不是一种新的数据类型,typedef定义的uint8_t、uint16_t、int8_t等可以更好的兼容各个平台,不用担心位不同机器造成的兼容性问题
虽然也有用u8、u16、u32等其他typedef定义方式,但是毕竟是少数,而uint8_t、uint16_t、int8_t等定义的方式是业界通用的,具有更高的兼容性
【规范2】关于指针定义时的*的位置,建议是靠近变量或者函数
如下列代码,靠近变量的*更能直观地看出该变量是指针
uint8_t* src; // *靠近类型 uint8_t *src; // *靠近变量 uint8_t* GetInfo(void); // *靠近返回值类型 uint8_t *GetInfo(void); // *靠近函数
【规范3】char定义的字符串在申请内存或者定义大小时都需要留结尾标识\0空间
strncpy等安全函数在拷贝字符串到达指定长度时,不会在目标字符串结尾添加\0,如果不手动添加\0,则会出现意向不到的问题
通常是在申请后立马清零或者定义时清零
【规范4】文件的编码格式尽量统一,如有中文,则统一为 utf8 的编码格式
在单片机开发或者需要开发 LCD 驱动的情况,需要自己通过工具生成需要使用的中文字库(大多是 GB2312 格式),则需要留意该文件的编码格式,如果文件的编码格式是 utf8,则不能正常对应,如下是LCD 驱动的部分使用的字体库(一般为 GB2312 编码)
/** * @brief 24 * 24 汉字字符集点阵索引 * @note 对应点阵数据 LCD_FONT_24X24_DATA */ const uint8_t LCD_FONT_24X24_IDX[] = { "参数" }; /** * @brief 24 * 24 汉字字符集点阵数据 */ const uint8_t LCD_FONT_24X24_DATA[]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x06,0x00, 0x00,0x81,0x01,0xC0,0x00,0x06,0xE0,0xFF,0x0D,0x00,0x04,0x08, 0x00,0x06,0x20,0xFC,0xFF,0x7F,0x00,0x41,0x00,0x80,0x91,0x00, 0xC0,0x18,0x03,0x20,0x0C,0x0E,0x10,0xC3,0x78,0x8C,0x60,0x00, 0x60,0x18,0x00,0x00,0x0C,0x06,0x00,0x83,0x03,0xE0,0xE0,0x00, 0x00,0x38,0x00,0x00,0x0E,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,/*"参",0*/ 0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x81,0x01,0x88,0x98,0x00, 0x90,0xCC,0x00,0xB0,0x44,0x00,0x90,0x4A,0x20,0xFC,0xDF,0x7F, 0xC0,0x60,0x08,0xA0,0x67,0x08,0x90,0x5C,0x08,0x88,0x54,0x0C, 0x84,0x48,0x0C,0xC0,0x80,0x04,0x40,0x8C,0x04,0xFC,0x8F,0x04, 0x20,0x04,0x07,0x20,0x02,0x03,0xC0,0x03,0x03,0x80,0x8F,0x06, 0x40,0x48,0x1C,0x30,0x30,0x78,0x0E,0x0C,0x10,0x00,0x00,0x00,/*"数",1*/ }而在调用 LCD 的显示中文函数的文件为 utf8 编码格式,则程序运行时函数LCD_ShowChinese无法和字体库匹配(编码格式不一样)
LCD_ShowChinese("参数");解决方式有两种:
将调用 LCD 的显示中文函数的文件全部调整为 GB2312 编码格式,这样源码就存在 GB2312 和 utf8 的编码格式文件
在函数LCD_ShowChinese增加 UTF8 转 GB2312 格式功能,这样就不需要将调用 LCD 的显示中文函数的文件转成 GB2312 编码格式了





