日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 大橙子瘋嵌入式


前言

這篇重點(diǎn)介紹一下代碼編程規(guī)范的擴(kuò)展要求-其他的建議

要求

【規(guī)范1】變量的類型定義建議統(tǒng)一采用uint8_t、uint16_t、int8_t等定義

根據(jù)8位、16位和32位等機(jī)器的不同,int等類型所占的字節(jié)不一樣,如果采用int等方式定義,那么在不同位機(jī)器移植代碼時(shí)就會出現(xiàn)很多問題
為了提高代碼的移植性,一般采用uint8_t、uint16_t、int8_t等定義的方式,它是通過typedef定義的,而不是一種新的數(shù)據(jù)類型,typedef定義的uint8_t、uint16_t、int8_t等可以更好的兼容各個(gè)平臺,不用擔(dān)心位不同機(jī)器造成的兼容性問題
雖然也有用u8、u16、u32等其他typedef定義方式,但是畢竟是少數(shù),而uint8_t、uint16_t、int8_t等定義的方式是業(yè)界通用的,具有更高的兼容性

【規(guī)范2】關(guān)于指針定義時(shí)的*的位置,建議是靠近變量或者函數(shù)

如下列代碼,靠近變量的*更能直觀地看出該變量是指針

uint8_t* src; // *靠近類型 uint8_t *src; // *靠近變量 uint8_t* GetInfo(void); // *靠近返回值類型 uint8_t *GetInfo(void); // *靠近函數(shù) 

【規(guī)范3】char定義的字符串在申請內(nèi)存或者定義大小時(shí)都需要留結(jié)尾標(biāo)識\0空間

strncpy等安全函數(shù)在拷貝字符串到達(dá)指定長度時(shí),不會在目標(biāo)字符串結(jié)尾添加\0,如果不手動添加\0,則會出現(xiàn)意向不到的問題
通常是在申請后立馬清零或者定義時(shí)清零

【規(guī)范4】文件的編碼格式盡量統(tǒng)一,如有中文,則統(tǒng)一為 utf8 的編碼格式

在單片機(jī)開發(fā)或者需要開發(fā) LCD 驅(qū)動的情況,需要自己通過工具生成需要使用的中文字庫(大多是 GB2312 格式),則需要留意該文件的編碼格式,如果文件的編碼格式是 utf8,則不能正常對應(yīng),如下是LCD 驅(qū)動的部分使用的字體庫(一般為 GB2312 編碼)

/**
 * @brief      24 * 24 漢字字符集點(diǎn)陣索引
 * @note       對應(yīng)點(diǎn)陣數(shù)據(jù) LCD_FONT_24X24_DATA
 */ const uint8_t LCD_FONT_24X24_IDX[] = { "參數(shù)" }; /**
 * @brief      24 * 24 漢字字符集點(diǎn)陣數(shù)據(jù)
 */ 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,/*"數(shù)",1*/ }

而在調(diào)用 LCD 的顯示中文函數(shù)的文件為 utf8 編碼格式,則程序運(yùn)行時(shí)函數(shù)LCD_ShowChinese無法和字體庫匹配(編碼格式不一樣)

LCD_ShowChinese("參數(shù)");

解決方式有兩種:

  1. 將調(diào)用 LCD 的顯示中文函數(shù)的文件全部調(diào)整為 GB2312 編碼格式,這樣源碼就存在 GB2312 和 utf8 的編碼格式文件

  2. 在函數(shù)LCD_ShowChinese增加 UTF8 轉(zhuǎn) GB2312 格式功能,這樣就不需要將調(diào)用 LCD 的顯示中文函數(shù)的文件轉(zhuǎn)成 GB2312 編碼格式了


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉