1. 程式人生 > >C語言中enum與typedef enum的用法

C語言中enum與typedef enum的用法

在瞭解enum和typedef enum的區別之前先應該明白typedef的用法和意義。 C語言裡typedef的解釋是用來宣告新的型別名來代替已有的類姓名。
 例如:
typedef int   CHANGE;

指定了用CHANGE代表int型別,CHANGE代表int,那麼:int a,b;和CHANGE a,b;是等價的、一樣的。方便了個人習慣,熟悉的人用CHANGE來定義int。
typedef為C語言的關鍵字,作用是為一種資料型別定義一個新名字。這裡的資料型別包括內部資料型別(int,char等)和自定義的資料型別(struct等)。
而enum是列舉型別,有了typedef的理解容易看出,typedef  enum定義了列舉型別,型別變數取值在enum{}範圍內取,在使用中二者無差別。
typedef enum {
    WAIT_CONNECTED, ///< The robot has connected
    WAIT_FAILED_CONN, ///< The robot failed to connect
    WAIT_RUN_EXIT, ///< The run loop has exited
    WAIT_TIMEDOUT, ///< The wait reached the timeout specified
    WAIT_INTR, ///< The wait was interupted by a signal
    WAIT_FAIL ///< The wait failed due to an error
} WaitState; enum ChargeState { CHARGING_UNKNOWN = -1, CHARGING_NOT = 0, CHARGING_BULK = 1, CHARGING_OVERCHARGE = 2, CHARGING_FLOAT = 3, CHARGING_BALANCE = 4 };
看上面兩個例子更好理解,上面的是WaitState的API,下面的直接呼叫enum裡的元素就可以了。

相關推薦

C言中staticextern的用法

在C語言中,static與extern的用法 (1)修飾區域性變數 a.一般情況下,對於區域性變數是存放在棧區的,並且區域性變數的生命週期在該語句塊執行結束時便結束了。但是如果用static進行修飾的話,該變數便存放在靜態資料區,其生命週期一直持續到整個程式

C言中enumtypedef enum用法

在瞭解enum和typedef enum的區別之前先應該明白typedef的用法和意義。 C語言裡typedef的解釋是用來宣告新的型別名來代替已有的類姓名。 例如: typedef int CHANGE; 指定了用CHANGE代表int型別,CHANG

enumtypedef enum用法

一,兩者的用法        列舉型別定義用關鍵字enum標識,形式為: enum 識別符號 {       列舉資料表 };列舉資料(列舉常量)是一些特定的識別符號,識別符號代表什麼含義,完全由程式設計師決定。資料列舉的順序規定了列舉資料的序號,從0開始,依次遞增。enum

C言中sprintf()函數的用法

用法 href bsp HA 連接 art tail 格式化 類型轉換 sprintf函數的用法1、該函數包含在stdio.h的頭文件中。 2、sprintf和平時我們常用的printf函數的功能很相似。sprintf函數打印到字符串中,而printf函數打印輸出到屏幕

c言中sscanf()sprintf()的使用

strong include print int quest stdio.h 語言 控制臺 dbn #include<stdio.h> void main(void){ char * cgistr = "|Ip=192.168.1.78|Port=56

C言中sizeofstrlen區別

由於 def sizeof 繼續 數組 color 例如 結束 自動添加 sizeof 初始的分配的空間大小,期中 sizeof(unsigned char) = 1; sizeof(signed char) = 1;        sizeof(int) = 4; siz

C言中exit()return的區別

1、exit函式和return函式的主要區別是: 1)exit用於在程式執行的過程中隨時結束程式,exit的引數是返回給OS的。main函式結束時也會隱式地呼叫exit函式。exit函式執行時首先會執行由atexit()函式登記的函式,然後會做一些自身的清理工作,同時重新整理所有輸出流、關閉所有開啟的流並且

c言中external,static關鍵字用法

static用法: 在C中,static主要定義全域性靜態變數、定義區域性靜態變數、定義靜態函式。 1、定義全域性靜態變數:在全域性變數前面加上關鍵字static,該全域性變數變成了全域性靜態變數。全域性靜態變數有以下特點。 a.在全域性區分配記憶體。 b.如果沒有初始化,其預設值為

C言中的Scanf函式常見用法之陷阱總結:

C語言中的Scanf函式常見用法之陷阱總結:  // C/C++語言中,scanf函式使用陷阱注意: //常見使用方式一: scanf("%d",&a,&b);----遇到空格或\n或非數字結束 //常見使用方式二: scanf("%s",array);----遇到

C言中scanf分隔符(空格回車Tab)

眾所周知,C語言中的scanf函式的作用是從標準輸入裝置(通常是鍵盤)讀取輸入值,並存儲到引數列表中指標所指向的記憶體單元。下面從幾個方面說一下一些稍微細節的東西。下面的實驗都在vc6.0中通過。 1、scanf的返回值 scanf通常返回的是成功賦值(從標準輸入裝置

C言中static的含義和用法

———————————– 測試環境:linux 開發語言:c 編譯工具:gcc ———————————– static 顧名思義是靜態、靜止的意思 個人理解的含義是私有、靜態 私有就是隱藏-> 1.static函式只能聲明後的本文中呼叫

C言中structunion的區別是什麼?

相同struc(結構體)與union(聯合體)都是符合結構,由多個不同的資料型別成員組成。不同1. 佔用地址空間unionunion所有成員共用一塊地址空間,即聯合體只存放了一個被選中的成員。所有成員不能同時佔用記憶體空間,它們不能同時存在,所以一個聯合型變數的長度等於其最長

C言中sizeofstrlen 的區別

字符指針 系統 32位 大小 添加 std 指針 為什麽 一行 sizeof與strlen是有著本質的區別,sizeof是求數據類型所占的空間大小,而strlen是求字符串的長度,字符串以/0結尾。總的來說sizeof把‘\0‘也給數上了,而strlen遇到‘\0‘就停止計

C++言中std::array的神奇用法總結,你需要知道!

摘要:在這篇文章裡,將從各個角度介紹下std::array的用法,希望能帶來一些啟發。 td::array是在C++11標準中增加的STL容器,它的設計目的是提供與原生陣列類似的功能與效能。也正因此,使得std::array有很多與其他容器不同的特殊之處,比如:std::array的元素是直接存放在例項內部,

由淺至深->C言中union和enum關鍵字的經典問題分析

引言:由淺至深系列的第二篇文章,繼續體悟語言中的一些細節! 文章嚮導 union的自我介紹 union與系統大小端 enum列舉的引入 真正意義上的常量? 正文 一、union的自我介紹   union(聯合/共用體)在語

C言中typedef不能儲存型別指示符同時用

C語言中,經常有如下的用法: typedefstruct  tag {     ... } MyType, *MyPtr; 一旦通過如上定以後,就可以用MyType來定義struct tag結構了。 以前我使用typedef的時候,是按照其字面意思理解的,所以進入了一個誤區

C言中typedef

中文 講解 tro table 現在 int 一個 cor 位置 typedef 的講解與應用實例   前言:我們學過C語言的人都應該聽過,或者說學過,甚至說用過typedef,多多少少都對其有所了解。不過就算沒聽過也沒關系,我們一起來探討一下。   闡述:typedef

C言中#define的用法

inux 就是 linu head 突出 開發 ffffff 條件 就會 1.簡單的define定義#define MAXTIME 1000一個簡單的MAXTIME就定義好了,它代表1000,如果在程序裏面寫if(i<MAXTIME){.........}編譯器在處理

C言中的struct和typedef struct<轉載>

對象 內部數據 編程 都是 內部 pre title HR 聲明 原文:http://www.nowamagic.net/librarys/veda/detail/1785 typedef為C語言的關鍵字,作用是為一種數據類型定義一個新名字。這裏的數據類型包括內部數據類

C言中typedef和sizeof的註意事項

isp sizeof spa 註意 list數據 對象 audio 應該 user typedef的作用是給一個數據類型起一個別名。 typedef struct LIST { int data; }SeqList; SeqList 就相當於struct LIS