title: What happens when the preprocessor sees SLOT(a) "1"#a
body: <p>My understanding is the preprocessor <code>#define</code> replaces <em>identifier</em> with <em>replacement</em></p>
  
  <pre><code>#define &lt;identifier&gt; &lt;replacement&gt;
  </code></pre>
  
  <p>Let's suppose we have the following:</p>
  
  <pre><code>#define SLOT(a) "1"#a
  
  void myValue(int value);
  SLOT(myValue(int));
  </code></pre>
  
  <p>I understand that <code>#</code> means <em>take the string literal</em>.  Thus, after the macro, wouldn't we have</p>
  
  <pre><code>"1""myValue(int)"
  </code></pre>
  
  <p>... essentially two string literals back to back.  I am guessing the preprocessor automatically concatenates two string literals back to back.  Is this true?  Where can I find information on this fact?</p>