I write the following macro for debug convinience,
1 #ifndef DEF_H
2 #define DEF_H
3 #define DEBUG_MODE
4 #define DEBUG_INFO(message) \
5 #ifdef DEBUG_MODE \
6 cout << message << endl; \
7 #endif \
8 #endif
but gcc complains as the following
def.h:4: error: '#' is not followed by a macro parameter
def.h:1: error: unterminated #ifndef
What's wrong with this piece of code? Do I miss some important points here?
You cannot have #ifdef
s inside a macro definition. You need to turn it inside out:
#ifdef DEBUG_MODE
#define DEBUG_INFO(message) cout << (message) << endl
#else
#define DEBUG_INFO(message)
#endif
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With