Sunday, January 17, 2016

以 EnumLookup 查詢 C enumerator

前陣子我把 AWK 撿回來練習,順便研究一下 Windows 下怎麼跑 GAWK 跟 AWKA 之類的工具。這期間,我想了幾個簡單的題目來練習。其中有個我稱作 EnumLookup 的工具,一些慣 C 的人應該會用到,所以在這裡做個分享。

顧名思義,這個工具的目的是針對 enum ,它可以在多個 C enumerations 上查詢 enumerator 或它們對應的值。這裡是安裝跟執行說明文件,大家可以根據上面的指引,直接下載內含執行檔的下載包來試用。

這個工具有個搭配的 enum.bat ,執行後可以雙向查詢:可反覆敲進數字來查對應的名字(enumerator),或者敲入名字(enumerator)來查對應的索引數字。

需要注意的是,這個工具沒有真的去實作完整的 C enum parser ,只是認「通常」情況下的 enum 特徵。下面這種寫成一行的寫法,無法正確執行:

typedef enum {SPRING, SUMMER, AUTUMN, WINTER} Season;

因為這工具不認得寫成一行的寫法,只認得下面這種,比較正規的,分行寫法:

typedef enum {
    SEASON_BEGIN,
    SPRING = SEASON_BEGIN, 
    SUMMER, 
    AUTUMN, 
    WINTER,
    SEASON_END,
    SEASON_TOTALS = SEASON_END // the total number of seasons
} Season;


0 comments: