C語言的枚舉與宏定義
有人可能會覺得這個太easy了,本來也沒想寫這篇文章,但是想想覺得有必要用自己的語言組織一下記下來,跟學習swift的枚舉做類比,好理解一些。
一、枚舉
1. what:
1)它看起來是這樣的:
enum week { MON, TUES, WED, THUR, FRI, SAT, SUN, };
2)是符號常量的集合
枚舉中定義的符號,其本質就是爲int型的常量。
枚舉定義時一般爲全局
3)是“值替身”。
用符號來代替數字,用符號來識別
2. why:爲什麼需要枚舉
1)對數字進行符號化
1.用數字:當程序代碼多了以後,單純使用數字不能讓程序員馬上理解該數字代表的含義,如看到數字0,可能需要查文檔才知道具體意義;
2.用枚舉:意義明顯,如看到MON能馬上理解是代表星期一的數字。
2)不是必須的,與宏定義類似
與宏定義可互換
3. how:
枚舉的定義與使用可參考這篇文章:點擊打開鏈接
二、宏定義
1. what:
1)它看起來是這樣的:
#define MON 0 #define TUES 1 #define WED 2 #define THUR 3 #define FRI 4 ...
2. why:
1)宏定義類似全局變量,可以改一處,則全部都改掉,方便修改和管理,不用一個一個的去改。
2)在程序預處理時,是將標識符原封不動地替換成標識符後面的變量
3. how:
可參考這篇文章:宏定義方法總結
三、枚舉與宏定義區別:
1)枚舉是“整”的: 多個有關聯的符號放在一個枚舉中(如一週有7天,一年的12個月等)。
宏是“散”的
2)同一程序裏,枚舉定義的符號不能重名
3) 枚舉 宏
作用時期: 程序運行時 預處理(替換代碼段)
存儲形式: 全局變量->數據段 代碼段
消耗CPU
4)什麼情況下更適合用枚舉?
當需要定義的變量是一個有限集合的時候