Don't think there's an answer for "which is always best" but, as Matthieu said
static const
is type safe. My biggest pet peeve with #define
, though, is when debugging in Visual Studio you cannot watch the variable. It gives an error that the symbol cannot be found.