Я работаю над домашней работой, и поскольку наши ограничения действительно строги, мне нужно везде проверять NULL
указатели, если я хочу 100%. Поэтому я сделал небольшую встроенную функцию, которая проверяет указатели на NULL
:
static inline void exit_on_null(void* ptr, const char* msg) {
if ( ! ptr ) {
printf("%s\n", msg);
exit(1);
}
}
Теперь я спросил себя: это безопасно? Из стандарта, который я знаю, можно сохранить указатель на void*
и обратно и получить исходный указатель. Означает ли это, что void*
версия указателя все еще сопоставима с NULL
или есть какая-то ошибка, в которой я могу работать? Например, всегда ли верно следующее:
ptr = NULL
(void*) ptr == NULL