另外一種定義符號常數的方法,是用 enum 語法。 但是此時只能定義 int 型態所容許的數值。 例如說
enum {ZERO, ONE, TWO, THREE, FOUR};效果就像是說了
#define ZERO 0 #define ONE 1 #define TWO 2 #define THREE 3 #define FOUR 4那些寫在 enum 裡面的字,都成為 enumeration names。 這些名字就相當於變數名,所以不能夠說
enum {ZERO, ONE, TWO, THREE, FOUR}; int ONE=1;這樣就相當於重複宣告了同樣名字的變數。
在 enum{ }; 裡面出現的字,如果沒有定義它的值, 就自動設定為前一個字的值 +1。如果第一個字沒有定義它的值,就令它是 0。 所以,以下語句
enum {Sun, Mon, Tue, Wed, Thr, Fri, Sat};定義了 Wed=3,而
enum {Jan=1, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec};就定義了 Jun=6,而
enum {NUL, BEL=7, BS, HT, LF, VT, FF, CR, ESC=27, SP=32};就定義了 NUL=0 (null)、HT=9 (horizontal tab)、 CR=13 (carriage return)。 上面這一句話,將常用的 ASCII 控制碼都定義成了符號常數。 因此,在 mywc.c 中,我們可以將
if (c == ' ' || c == '\t' || c == '\n')改寫成
if (c == SP || c == HT || c == LF)這樣或許提高了原始碼的可讀性。
習題
注意:此處所有文件均為原著,個別的版權宣告日後會一一公布, 整體版面設計亦尚未完成。但仍請勿抄襲文字與圖片,以免觸犯著作權法。
Created: Apr 22, 2000
Last Revised: Apr 22, 2000
© Copyright 2000 Wei-Chang Shann 單維彰