приведение 0 к void

В моей реализации C ++ (реализация Visual Studio 2008) я вижу следующую строку в

#ifdef  NDEBUG
#define assert(_Expression) ((void)0)

Я не понимаю необходимости преобразовывать 0 в void. Мне кажется, что

#ifdef  NDEBUG
#define assert(_Expression) (0)

или даже просто

#ifdef  NDEBUG
#define assert(_Expression) 0

подойдет, учитывая контексты, в которых может использоваться assert (expr) .

Итак, в чем опасность 0 типа ] int вместо 0 типа void в этом случае? Есть какие-нибудь реалистичные примеры?

11
задан Cœur 13 July 2018 в 14:00
поделиться