title: How do I concatenate wide string literals with PRId32, PRIu64, etc.?
body: <p>Suppose I need to print a formatted string with an <code>int32_t</code> using the printf format specifier from <code>&lt;inttypes.h&gt;</code>.</p>
  
  <pre><code>int32_t i = 0;
  printf("%" PRId32 "\n", i);
  </code></pre>
  
  <p>If I try to do the same with wide characters in Visual C++ 2013, it fails:</p>
  
  <pre><code>#define W_(val) L ## val
  #define W(val) W_(val)
  wprintf(L"%" W(PRId32) L"\n", i);
  </code></pre>
  
  <blockquote>
    <p>error C2308: concatenating mismatched strings</p>
  </blockquote>
  
  <p>How do I concatenate wide string literals with format conversion specifier macros?</p>