title: Stringification of a macro value
body: <p>I faced a problem - I need to use a macro value both as string and as integer.</p>
  
  <pre><code> #define RECORDS_PER_PAGE 10
  
   /*... */
  
   #define REQUEST_RECORDS \
        "SELECT Fields FROM Table WHERE Conditions" \
        " OFFSET %d * " #RECORDS_PER_PAGE \
        " LIMIT " #RECORDS_PER_PAGE ";"
  
   char result_buffer[RECORDS_PER_PAGE][MAX_RECORD_LEN];
  
   /* ...and some more uses of RECORDS_PER_PAGE, elsewhere... */
  </code></pre>
  
  <p>This fails with a message about "stray #", and even if it worked, I guess I'd get the macro names stringified, not the values. Of course I can feed the values to the final method ( <code>"LIMIT %d ", page*RECORDS_PER_PAGE</code> ) but it's neither pretty nor efficient.
  It's times like this when I wish the preprocessor didn't treat strings in a special way and would process their content just like normal code. 
  For now, I cludged it with <code>#define RECORDS_PER_PAGE_TXT "10"</code> but understandably, I'm not happy about it.</p>
  
  <p>How to get it right?</p>