title: What are the applications of the ## preprocessor operator and gotchas to consider?
body: <p>As mentioned in many of my previous questions, I'm working through K&amp;R, and am currently into the preprocessor. One of the more interesting things &mdash; something I never knew before from any of my prior attempts to learn C &mdash; is the <code>##</code> preprocessor operator. According to K&amp;R:</p>
  
  <blockquote>
    <p>The preprocessor operator <code>##</code>
    provides a way to concatenate actual
    arguments during macro expansion. If a
    parameter in the replacement text is
    adjacent to a <code>##</code>, the parameter is
    replaced by the actual argument, the
    <code>##</code> and surrounding white space are
    removed, and the result is re-scanned.
    For example, the macro <code>paste</code>
    concatenates its two arguments:</p>
    
    <p><code>#define  paste(front, back)  front ## back</code></p>
    
    <p>so <code>paste(name, 1)</code> creates the token
    <code>name1</code>.</p>
  </blockquote>
  
  <p>How and why would someone use this in the real world? What are practical examples of its use, and are there gotchas to consider? </p>