大橙子疯
认证:普通会员
作者动态
如何设计一个高效轻量的链表
1星期前
C/C++:为何“零”成为成功的魔数?
2星期前
C语言中零值比较的最佳实践
2星期前
如何让你的Git Commit 更有逼格,又十分高效
2星期前
Git如何实现高效而有序的分支管理
02-10 09:58

代码编程规范-扩展(其他建议)

前言

这篇重点介绍一下代码编程规范的扩展要求-其他的建议

要求

【规范1】变量的类型定义建议统一采用uint8_tuint16_tint8_t等定义

根据8位、16位和32位等机器的不同,int等类型所占的字节不一样,如果采用int等方式定义,那么在不同位机器移植代码时就会出现很多问题为了提高代码的移植性,一般采用uint8_tuint16_tint8_t等定义的方式,它是通过typedef定义的,而不是一种新的数据类型,typedef定义的uint8_tuint16_tint8_t等可以更好的兼容各个平台,不用担心位不同机器造成的兼容性问题虽然也有用u8u16u32等其他typedef定义方式,但是毕竟是少数,而uint8_tuint16_tint8_t等定义的方式是业界通用的,具有更高的兼容性

【规范2】关于指针定义时的*的位置,建议是靠近变量或者函数

如下列代码,靠近变量的*更能直观地看出该变量是指针

uint8_t* src; // *靠近类型uint8_t *src; // *靠近变量uint8_t* GetInfo(void); // *靠近返回值类型uint8_t *GetInfo(void); // *靠近函数

【规范3】char定义的字符串在申请内存或者定义大小时都需要留结尾标识\0空间

strncpy等安全函数在拷贝字符串到达指定长度时,不会在目标字符串结尾添加\0,如果不手动添加\0,则会出现意向不到的问题通常是在申请后立马清零或者定义时清零

【规范4】文件的编码格式尽量统一,如有中文,则统一为 utf8 的编码格式

/**
  * @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("参数");

解决方式有两种:

  1. 将调用 LCD 的显示中文函数的文件全部调整为 GB2312 编码格式,这样源码就存在 GB2312 和 utf8 的编码格式文件

  2. 在函数LCD_ShowChinese增加 UTF8 转 GB2312 格式功能,这样就不需要将调用 LCD 的显示中文函数的文件转成 GB2312 编码格式了

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 3
收藏 1
关注 23
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧