title: Preprocessor syntax to use an #define as an identifier (function name) and a string
body: <p>I'm not sure if this is possible, but I would like to create a shared object file and I would like to make it easy to use by having a <code>#define</code> that can be used to dereference the function names.</p>
  
  <p>In <b>libfoo.h</b></p>
  
  <pre><code>#define FOO_SO_FUNCTION_A    aFunction
  </code></pre>
  
  <p>In <b>libfoo.so</b></p>
  
  <pre><code>#include "libfoo/libfoo.h"
  
  extern "C" int FOO_SO_FUNCTION_A( void )
  {
      ...
  }
  </code></pre>
  
  <p>In <b>clientfoo</b></p>
  
  <pre><code>#include "libfoo/libfoo.h"
  
  ...
  libfoofunc = dlsym( libfoo, MAKE_STRING(FOO_SO_FUNCTION_A) );
  </code></pre>
  
  <p>My problem is that</p>
  
  <pre><code>#FOO_SO_FUNCTION_A
  </code></pre>
  
  <p>Will simply change into "FOO_SO_FUNCTION_A" because the preprocessor rightfully  only runs once.  Is there another way to accomplish this?</p>