1
我听说你可以在你的代码中添加一些特殊的指令,当GCC检测到0被作为参数传递时(这意味着在编译时可能),GCC会发出警告。当0作为参数传递时,GCC是否会发出警告?
我已经找过它,但一直未能找到它。这是真的?
我听说你可以在你的代码中添加一些特殊的指令,当GCC检测到0被作为参数传递时(这意味着在编译时可能),GCC会发出警告。当0作为参数传递时,GCC是否会发出警告?
我已经找过它,但一直未能找到它。这是真的?
有一个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。)