Проблема в том, что DWASSERT(ptr1 == ptr2, ...
расширяется до
if(!ptr1 == ptr2){ printf(...
Вы видите, что происходит?!ptr1 == ptr2
эквивалентно (!ptr1) == (ptr2)
, а поскольку !ptr1
является целочисленным типом, а ptr2
является типом указателя, вы получите ошибку.
Что нужно сделать, чтобы исправить это, это изменитьВаше определение макроса:
#define DWASSERT(condition,printstatement) if(!(condition)){ printf...
Также имейте в виду, что плохая идея использовать printf
так, как вы используете, с произвольной строкой в качестве формата.В какой-то момент кто-то даст вам строку с %
, и все сломается.Вы должны использовать что-то вроде puts(x)
или printf("%s", x)
.