用type定義的列舉型別和結構體

2021-07-11 20:31:33 字數 2026 閱讀 6822

typedef enumgpiomode_typedef;
gpiomode_typedef是新型別名,使用它定義變數時和int a;的方式類似,gpiomode_typedef gpio_mode;給gpio_mode賦值時,只能取列舉當中定義的值。

此外,在c編譯時,對列舉按常量來處理,若沒有對列舉元素賦值,則c語言編譯時會按照定義時的順序依次對元素賦值為0,1,2……。當然,也可以想示例中那樣,在定義時由程式設計師指定元素的值。

typedef

structgpio_inittypedef;

gpio_inittypedef是新型別名,定時變數的方式為:gpio_inittypedef gpio_initstructure;。結構體應用時的格式是:變數名.成員名,例如gpio_initstructure.gpio_mode = gpio_mode_out_pp;

// 定義gpiomode_typedef列舉型別

typedef enumgpiomode_typedef;

// 定義gpiospeed_typedef列舉型別

typedef enumgpiospeed_typedef;

// 定義gpio_inittypedef結構體型別

typedef structgpio_inittypedef;

#define gpio_pin_0 ((uint16_t)0x0001) /*!< pin 0 selected */

#define gpio_pin_1 ((uint16_t)0x0002) /*!< pin 1 selected */

#define gpio_pin_2 ((uint16_t)0x0004) /*!< pin 2 selected */

#define gpio_pin_3 ((uint16_t)0x0008) /*!< pin 3 selected */

#define gpio_pin_4 ((uint16_t)0x0010) /*!< pin 4 selected */

#define gpio_pin_5 ((uint16_t)0x0020) /*!< pin 5 selected */

#define gpio_pin_6 ((uint16_t)0x0040) /*!< pin 6 selected */

#define gpio_pin_7 ((uint16_t)0x0080) /*!< pin 7 selected */

#define gpio_pin_8 ((uint16_t)0x0100) /*!< pin 8 selected */

#define gpio_pin_9 ((uint16_t)0x0200) /*!< pin 9 selected */

#define gpio_pin_10 ((uint16_t)0x0400) /*!< pin 10 selected */

#define gpio_pin_11 ((uint16_t)0x0800) /*!< pin 11 selected */

#define gpio_pin_12 ((uint16_t)0x1000) /*!< pin 12 selected */

#define gpio_pin_13 ((uint16_t)0x2000) /*!< pin 13 selected */

#define gpio_pin_14 ((uint16_t)0x4000) /*!< pin 14 selected */

#define gpio_pin_15 ((uint16_t)0x8000) /*!< pin 15 selected */

#define gpio_pin_all((uint16_t)0xffff) /*!< all pins selected */

int main(void)

列舉型別的定義和應用

1.列舉型別定義 type days sunday,monday,tuesday,wednesday,thursday,friday,saturday 列舉型別,屬於順序型別,序號從0開始 colors red,yellow,blue,green,black 可以同時多個列舉型別定義 下面定義方法是...

巨集定義和列舉型別的區別

摘要 在c語言的程式設計中,我們常常需要定義一些常量,此時是採用巨集定義還是採用列舉型別呢?它們有哪些區別?本文主要 這個問題。一 作用域對比 1.1巨集定義的預設作用域為整個檔案,如果定義了巨集定義結尾的地方,作用域就到那個地方 這裡有乙個潛在的危險,如果我們的標頭檔案中包含了巨集定義,此時會導致...

自定義型別(結構,列舉,聯合)

eg struct tag tag結構體標籤 char name 10 名字 int age 年齡 char gender 3 性別 分號不能丟 在結構體宣告的時候,可以省略結構體標籤tag 2.結構體的成員 標量,陣列,指標,甚至其他結構體 3.結構體成員的訪問 1.結構體是通過點操作符 訪問的,...