title: How to avoid "null argument where non-null required" compiler warning
body: <p>Compiling the following code:</p>
  
  <pre><code>#include &lt;string.h&gt;
  #define FOO (NULL)
  
  int main(int argc, char *argv[])
  {
      char *foo;
  
      if (FOO)
          foo = strdup(FOO);
  
      return 0;
  }
  </code></pre>
  
  <p>results in the following compiler warning:</p>
  
  <pre><code>foo.c: In function ‘main’:
  foo.c:9:3: warning: null argument where non-null required (argument 1) [-Wnonnull]
     foo = strdup(FOO);
     ^
  </code></pre>
  
  <p>However, <code>strdup</code> won't be called if <code>FOO</code> is <code>NULL</code> because of the <code>if (FOO)</code> check.  Is there any way to avoid this warning?</p>
  
  <p>Thanks!</p>