#ifndef MACROS_NULLCHECK_H_
#define MACROS_NULLCHECK_H_
#include <assert.h>
#define NULLCHECK(x) assert(x != (void *) 0);
#endif
Если я использовал этот стиль в качестве шаблона для объявления макросов, какие у вас были бы условия?C: Эффективное использование макросов
пренебрегая ваш вопрос на данный момент: макрос 'NULLCHECK()' бесполезно: указатели скалярные типы и, следовательно, может использоваться в булевых контекстах; 'NULLCHECK (foo)' делает то же самое, что и 'assert (foo)' – Christoph
@Christoph True, см. Http: // stackoverflow.com/questions/1296843/what-is-the-difference-between-null-0-and-0/1296865 для большего. –
@ Кристоф: Я не согласен: Утверждения должны быть Overt. Если это утверждение действительно вызывается, будет отображаться более открытое сообщение. т.е.: '' Нарушение утверждения: файл exe.c, строка $: (foo)! = (void *) 0 "' vs. '" Нарушение утверждения: файл exe.c, строка $: (foo) "' –