требуется расширить "до выражения 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 типанедействительным в этом случае? Любыереалистический Примеры?

Ответы на вопрос(1)

Ваш ответ на вопрос