C/C++/Javaで、(数値の)列挙型。名前を付けた整数定数の集合を用意し、その集合の要素を新たな型として定義する予約語。
#defineで定数をマクロ定義するのに比べ、enumで定義した型を使用すると、
などのメリットが期待できる。
もちろん、これはツール(コンパイラ、デバッガ)の作りによる。
元々はPascalで搭載されていた機能で、一部のメーカーのCコンパイラで採用された後、ANSI Cで正式に規格に組み込まれた。
Javaでは、public、static、finalな定数を使うことで代わりにしていたが、Java Standard Edition 5.0において、java.lang.Enum型を継承する特殊なクラスとしてenumを定義することが可能になった。