требуется расширить "до выражения void" по стандарту. Я уверен, что это требование в стандарте по причинам, которые совпадают со многими комментариями здесь. Но что касается конкретной реализации, это все обоснование, которое необходимо.
ей реализации 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 типаИНТ вместо 0 типанедействительным в этом случае? Любыереалистический Примеры?