#define は危険って言っても、
適正な使い方をする分には問題ないし、
連続定数以外は #define した方がいいと思われ。
連続定数以外に enum 使うのは可読性が悪い気がする。
goto は絶対使っちゃダメ、っていうぐらい極端な思想だと思う。

C++ なら const 定数をその代わりとして使えるから、
#define は使わないんだけどね。