title: spaces not needed in case labels?
body: <p>May be this is a silly question, but did anyone already know whether or not there would be a mandatory space between the <code>case</code> keyword and its constant expression in the <code>switch</code> statement?</p>
  
  <p>The standard seems not say anything about...</p>
  
  <p>Consider the following code:</p>
  
  <pre><code>switch(int_expression)
  {
      case1:     /*anything*/  // no space before 1
      caseZERO:  /*anything*/  // no space before ZERO
                               // ZERO being defined as 0
                               // by the pre-processor
  }
  </code></pre>
  
  <p>Both my reference compilers accept this code and once run it works nicely.
  How does the preprocessor recognize that ZERO must be substituted?</p>
  
  <p>Note also that if the control expression was a <code>char</code> type instead of a <code>int</code> type the following is also compiled but this time it no longer works</p>
  
  <pre><code>switch(char_expression)
  {
      case'a':   /* anything */  // NO SPACES embedded
      caseZERO:  /* anything */  // NO SPACES again
                                 // ZERO being defined as '0'
                                 // by the pre-processor
  }
  </code></pre>
  
  <p>THIS COMPILES but even if the value of the <code>char_expression</code> was '0'
  no statement in <code>caseZERO</code> is executed.</p>
  
  <p>Can anyone explain this?</p>