title: Is it possible for C preprocessor macros to contain preprocessor directives?
body: <p>I would like to do the equivalent of the following:</p>
  
  <pre><code>#define print_max(TYPE) \
  #  ifdef TYPE##_MAX \
       printf("%lld\n", TYPE##_MAX); \
  #  endif
  
  print_max(INT);
  </code></pre>
  
  <p>Now the <code>#ifdef</code> or any nested preprocessor directive is
  not allowed as far as I can see in a function macro.
  Any ideas?</p>
  
  <p>Update: So it seems like this is not possible. Even a hack to check at runtime seems unachievable. So I think I'll go with something like:</p>
  
  <pre><code>#ifndef BLAH_MAX
  #  define BLAH_MAX 0
  #endif
  # etc... for each type I'm interested in
  
  #define print_max(TYPE) \
      if (TYPE##_MAX) \
         printf("%lld\n", TYPE##_MAX);
  
  print_max(INT);
  print_max(BLAH);
  </code></pre>