title: C function macro to take NSString placeholders
body: <p>In my IOS-Project, I have a custom Logger-class (singleton) containing the function</p>
  
  <pre><code>- (void)log:(NSString *)domain logLevel:(int)level logMessage:(NSString *)message
  </code></pre>
  
  <p>which is globally available through the following preprocessor macro:</p>
  
  <pre><code>#define MyLog(domain, level, message) [[MyLogger sharedInstance] log:domain logLevel:level logMessage:message]
  </code></pre>
  
  <p>Now when I make the call:</p>
  
  <pre><code>MyLog(@"common", LL_ERROR, @"There was an error!");
  </code></pre>
  
  <p>Everything works fine. But in practice, the logMessage will sometimes contain string placeholders. So the big question is:
  How can I make my macro accept calls like</p>
  
  <pre><code>MyLog(@"common", LL_ERROR, @"There was an error: %@", [error debugDescription]);
  </code></pre>
  
  <p>With the current solution, Xcode complains: "Too many arguments provided to function-like macro invocation".</p>