我被告知你可以在你的代码中添加一些特殊指令,使GCC在检测到0作为参数传递时发出警告(这意味着,在编译时可以)。
我找了它但却找不到它。这是真的吗?
答案 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。)