次のコードをコンパイルします。
#include <string.h>
#define FOO (NULL)
int main(int argc, char *argv[])
{
char *foo;
if (FOO)
foo = strdup(FOO);
return 0;
}
次のコンパイラ警告が発生します。
foo.c: In function ‘main’:
foo.c:9:3: warning: null argument where non-null required (argument 1) [-Wnonnull]
foo = strdup(FOO);
^
ただし、チェックが原因である場合はstrdup
呼び出されません。この警告を回避する方法はありますか?FOO
NULL
if (FOO)
ありがとう!