Если макрос
NDEBUG
был определен во время последнего включения
<assert.h>,
то макрос
assert_perror()
не будет создавать код, и поэтому ничего вообще не будет сделано.
Иначе макрос
assert_perror()
выводит сообщение об ошибках на стандартный выход и
завершает работу программы вызовом
abort(),
если
errnum
не равно нулю. Сообщение содержит имя файла, название функции
и номер строки макроса, вывод из
strerror(errnum).
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Никакие значения не возвращаются.
СООТВЕТСТВИЕ СТАНДАРТАМ
Это расширение GNU.
НАЙДЕННЫЕ ОШИБКИ
Целью макроса assert является помощь программистам в поиске ошибок
в программах - таких сбоев, которые не могут случиться, если только
не была допущена ошибка в коде программы. Однако, с системными или
библиотечными вызовами ситуация немного отличается, и возврат ошибки
может произойти - и собственно произойдет и будет проверен, но
не через assert, где проверка не получится, если определено NDEBUG,
а правильным кодом обработки ошибок. Никогда не используйте этот макрос.