title: Concatenate preprocessor defines to form a string
body: <p>I have this:</p>
  
  <pre><code>#define VERSION_MAJOR 1
  #define VERSION_MINOR 0
  #define REVISION b
  #define VERSION VERSION_MAJOR.VERSION_MINOR REVISION
  #define _STRINGIFY(x) #x
  #define STRINGIFY(x) _STRINGIFY(x)
  integer version_major = VERSION_MAJOR;
  integer version_minor = VERSION_MINOR;
  string revision = STRINGIFY(REVISION);
  string version_string = STRINGIFY(VERSION);
  </code></pre>
  
  <p>However, this sets <code>version_string</code> to <code>"1.0 b"</code>. I want to eliminate the space between VERSION_MINOR and REVISION. I've tried this:</p>
  
  <pre><code>#define VERSION VERSION_MAJOR.VERSION_MINOR##REVISION
  </code></pre>
  
  <p>but it produces <code>"1.VERSION_MINORREVISION"</code>. Obviously, this doesn't work either:</p>
  
  <pre><code>#define VERSION VERSION_MAJOR.VERSION_MINORREVISION
  </code></pre>
  
  <p>Is it possible to concatenate the two preprocessor values without having a space in between?</p>
  
  <p><strong>Update:</strong> I changed the language because the question was about the preprocessor and not about the language. I actually needed it for LSL, even though I initially formulated the question with C syntax, which is familiar to more users, but LSL does not allow forming longer string literals by making them adjacent.</p>