Зачем использовать (void) 1 в качестве запрета в C ++? - PullRequest
4 голосов
/ 02 ноября 2011

Я просматриваю стороннюю кодовую базу и вижу это определение assert макроса:

#define assert( x ) \
     if( !( x ) ) { \
        ThrowException( __FILE__, __LINE__ ); \
     } else \
        ((void)1)

Какой смысл в (void)1? Чем он лучше идиоматического (void)0?

Ответы [ 2 ]

4 голосов
/ 02 ноября 2011

Я думаю, что это не имеет большого значения (и будет оптимизировано компилятором).И <cassert> - это стандартный заголовок C ++ (использующий стандартный заголовок <assert.h> C), который определяет стандартный макрос assert, поэтому приложение не должно переопределять его.

4 голосов
/ 02 ноября 2011

Нет разницы между (void)1 и (void)0.

...