#define
- команда препроцессора, что означает, что она не рассчитывается / не обрабатывается в функции nullCheck()
, а до компиляции кода. поэтому _NULL_ERROR
всегда определяется и, следовательно, условие
#ifdef _NULL_ERROR
#undef _NULL_ERROR
return -1;
#endif
всегда заставит прекомпилятор добавить return -1;
в ваш код.