列挙型は、次の構文で宣言できます。
enum [type] {enum_name1, enum_name2...enum_namex} identifier
データ型を指定しない場合は、enum
はデフォルトで int
になります。次に例を示します。
enum {sun, mon, tues, wed, thurs, fri, sat} day_of_week;
このコードでは、7 つの値を含む enum
の int
が生成されます。これらの名前には 0 から開始する値が割り当てられ、sun = 0
および sat = 6
となります。
デフォルト値を変更するには、次の例のようなコードを使用します。
enum {sun=1, mon, tues, wed, thurs, fri, sat} day_of week;
この場合、sun
の値は 1 で sat
の値は 7 になります。
次の例は、デフォルト値を変更する別の方法を示します。
enum {sun, mon=3, tues, wed, thurs=10, fri=12, sat} day_of_week;
この場合、sun=0
、mon=3
、tues=4
、wed=5
、thurs=10
、fri=12
、および sat=13
になります。
列挙型は、typedef キーワードでも使用できます。
typedef enum {sun,mon,tues,wed,thurs,fri,sat} day_of_week; day_of_week my_day;
この例では、my_day
というデータ型の day_of_week
という信号を定義しています。enums
の範囲を指定することもできます。たとえば、上記の例の場合は次のように指定できます。
enum {day[7]} day_of_week;
これにより、day_of_week
、day0
day1
day6 という 7 個の要素を含む day6
という列挙型が作成されます。
次は、列挙型を使用した例です。
enum {day[1:7]} day_of_week; // creates day1,day2...day7
enum {day[7] = 5} day_of_week; //creates day0=5, day1=6... day6=11