当0作为参数传递时,GCC可以发出警告吗?

时间:2012-02-16 09:41:52

标签: gcc compilation

我被告知你可以在你的代码中添加一些特殊指令,使GCC在检测到0作为参数传递时发出警告(这意味着,在编译时可以)。

我找了它但却找不到它。这是真的吗?

1 个答案:

答案 0 :(得分:3)

您可以使用function attribute来警告空指针:

void foo(void *data) __attribute__((nonnull));

int main(void)
{
    foo(0);
    return 0;
}
$ gcc -Wall -c t.c
t.c: In function ‘main’:
t.c:5:5: warning: null argument where non-null required (argument 1) [-Wnonnull]

我不知道内置任何内容来检查整数类型的0。

您可能会在Linux内核的各种BUILD_BUG_*宏中找到适合您需求的内容。他们在include/linux/kernel.h。 (Cross-referenced here。)