亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標(biāo)題: 記錄C語言結(jié)構(gòu)體的使用 [打印本頁]

作者: SKYLAR123    時(shí)間: 2020-1-8 11:12
標(biāo)題: 記錄C語言結(jié)構(gòu)體的使用
結(jié)構(gòu)體: 在單片機(jī)開發(fā)中,經(jīng)常會(huì)遇到要初始化一個(gè)外設(shè),比如串口,它的初始化狀態(tài)是由幾個(gè)屬性來決定的,比如串口號(hào),波特率,極性及模式。對(duì)于這種情況,在我們沒有學(xué)習(xí)結(jié)構(gòu)體時(shí),我們一般的方法是:
void USART_Init( u8 usartx , u32 BandRate , u8 parity , u8 mode );
        這種方式是有效的同時(shí)在一定場合是可取的。但是試想,如果有一天,我們希望往這個(gè)函數(shù)里再傳入一個(gè)參數(shù),那么勢必我們需要修改這個(gè)函數(shù)的定義,重新加入字長這個(gè)入口參數(shù)。于是我們的定義被修改為:
void USART_Init( u8 usartx , u32 BandRate , u8 parity , u8 mode , u8 wordlength );
但是如果我們這個(gè)函數(shù)的入口參數(shù)是隨著開發(fā)不斷的增多,那么是不是我們就要不斷的修改函數(shù)的定義呢?這是不是給我們開發(fā)帶來很多的麻煩呢?那又怎樣解決這種情況呢?
這樣如果我們使用到結(jié)構(gòu)體就能解決這個(gè)問題了。我們可以在不改變?nèi)肟趨?shù)的情況下,只要改變結(jié)構(gòu)體的成員變量,就可以達(dá)到上面改變?nèi)肟趨?shù)的目的。
結(jié)構(gòu)體就是將多個(gè)變量組合為一個(gè)有機(jī)的整體。上面的函數(shù),BandRate,wordlength,Parity,mode,這些參數(shù),他們對(duì)于串口而言,是一個(gè)有機(jī)整體,都是來設(shè)置串口參數(shù)的,所以我們可以將他們通過定義一個(gè)結(jié)構(gòu)體來組合在一個(gè)。MDK中是這樣定義的:
typedef struct
{
uint32_t USART_BandRate;
uint16_t USART_WordLength;
uint16_t USART_StopBits;
uint16_t USART_Parity;
uint16_t USART_Mode;
uint16_t USART_HardwareFlowControl;
} USART_InitTypeDef;
于是,我們?cè)诔跏蓟诘臅r(shí)候入口參數(shù)就可以是USART_InitTypeDef類型的變量或者指針變量了,MDK中是這樣做的:
void USART_Init( USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct );
這樣,任何時(shí)候,我們只需要修改結(jié)構(gòu)體成員變量,往結(jié)構(gòu)體中間加入新的成員變量,而不需要修改函數(shù)定義就可以達(dá)到修改入口參數(shù)同樣的目的了。
在以后的開發(fā)過程中,如果你的變量定義過多時(shí),如果某幾個(gè)變量是用來描述某一個(gè)對(duì)象,你可以考慮將這些變量定義在結(jié)構(gòu)體中,這樣也許可以提高你的代碼的可讀性。






歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1