title: Why compiler complain about this macro declaration
body: <p>I write the following macro for debug convinience,</p>
  
  <pre><code>1 #ifndef DEF_H
  2 #define DEF_H
  3 #define DEBUG_MODE
  4 #define DEBUG_INFO(message)     \
  5         #ifdef DEBUG_MODE       \
  6                 cout &lt;&lt; message &lt;&lt; endl; \
  7         #endif                          \
  8 #endif
  </code></pre>
  
  <p>but gcc complains as the following</p>
  
  <pre><code>def.h:4: error: '#' is not followed by a macro parameter
  def.h:1: error: unterminated #ifndef
  </code></pre>
  
  <p>What's wrong with this piece of code? Do I miss some important points here?</p>