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
You can't embed a preprocessor directive in another preprocessor directive (the #ifdef DEBUG_MODE
inside the definition of DEBUG_INFO
). Instead, do something like
#ifdef DEBUG_MODE
# define DEBUG_INFO(message) cout << message << endl
#else
# define DEBUG_INFO(message) 0
#endif
(This is still not ideal; defensive macro coding suggests something like
#ifdef DEBUG_MODE
# define DEBUG_INFO(message) do {cout << message << endl;} while (0)
#else
# define DEBUG_INFO(message) 0
#endif
Perhaps an inline
function would work better.)
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
I geuss if you eat '\' at line 7, the piece of Code will work.