编译以下代码:
#include <string.h>
#define FOO (NULL)
int main(int argc, char *argv[])
{
char *foo;
if (FOO)
foo = strdup(FOO);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
导致以下编译器警告:
foo.c: In function ‘main’:
foo.c:9:3: warning: null argument where non-null required (argument 1) [-Wnonnull]
foo = strdup(FOO);
^
Run Code Online (Sandbox Code Playgroud)
但是,strdup如果FOO是NULL因为if (FOO)检查将不会被调用.有没有办法避免这种警告?
谢谢!