Not for enum specifically. However, I've written code like this many times:
#ifdef DEBUG #define DO_IF_DEBUG(X...) X #else #define DO_IF_DEBUG(X...) #endif /.../ int some_function (string a, array b, DO_IF_DEBUG(int debug_flag))
It's possible to cope with this situation anyway by moving the comma after "b" to inside the debug argument, but it gets uglier imo. On occasion it can become really tricky to get commas correct if the parser is strict about them.