Может ли GCC выдавать предупреждение, когда 0 передается в качестве аргумента? - PullRequest
1 голос
/ 16 февраля 2012

Мне сказали, что вы можете добавить некоторые специальные инструкции в свой код, чтобы заставить GCC выдавать предупреждение, когда он обнаруживает, что 0 передается в качестве аргумента (что означает, когда это возможно во время компиляции).

Я искал это, но не смог найти это. Это правда?

1 Ответ

3 голосов
/ 16 февраля 2012

Существует атрибут функции , который можно использовать для предупреждения о пустых указателях:

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 на наличиехотя целочисленные типы.

Вы можете найти что-то, что соответствует вашим потребностям, в различных макросах BUILD_BUG_* из ядра Linux.Они в include/linux/kernel.h.( Перекрестная ссылка здесь .)

...