Возможный дубликат:
Почему (void) 0 a нет операции в C и С++?
В моей реализации С++ (реализация Visual Studio 2008) я вижу следующую строку в <cassert>
#ifdef NDEBUG
#define assert(_Expression) ((void)0)
Я не понимаю, нужно ли отбрасывать 0 в пустоту. Мне кажется, что
#ifdef NDEBUG
#define assert(_Expression) (0)
или даже просто
#ifdef NDEBUG
#define assert(_Expression) 0
учитывая контексты, в которых может использоваться assert(expr)
.
Итак, какова опасность 0 типа int вместо 0 типа void в этом случае? Любые реалистичные примеры?