title: Bulky macro definition overload
body: <p>I want to define macro like</p>
  
  <pre><code>#define DECLARE_FUNCTION(funcName, retType, args) retType funcName(args)
  </code></pre>
  
  <p>And use it like</p>
  
  <pre><code>DECLARE_FUNCTION(intFunc, int, void);
  DECLARE_FUNCTION(voidFunc, void, double, double);
  DECLARE_FUNCTION(doubleFunc, double, int, double, double);
  </code></pre>
  
  <p>expecting that those will expand to </p>
  
  <pre><code>int intFunc(void);
  void voidFunc(double, double);
  double doubleFunc(int, double, double);
  </code></pre>
  
  <p>This is certainly not working, as macro defined with three arguments eats all the “redundant” arguments and result is</p>
  
  <pre><code>int intFunc(void);
  void voidFunc(double);
  double doubleFunc(int);
  </code></pre>
  
  <p>I don’t mind defining macros for different cases, like 
  <code>DECLARE_FUNCTION_WITH_0_ARGS</code>, <code>DECLARE_FUNCTION_WITH_1_ARG</code>, <code>DECLARE_FUNCTION_WITH_2_ARGS</code>, etc. But the problem is that these macros are not as primitive as I gave in the example, they contain a lot of lines of code, and it would be nice not to rewrite them, but to define only one nontrivial macro, e.q. <code>DECLARE_FUNCTION_WITH_1_ARG</code>, and call it from bodies of all other macros.</p>