Я уже некоторое время использую libnet и заметил, что есть некоторые функции, которые возвращают значение uint32_t
, которое, на мой взгляд, относится к типу без знака.Тем не менее, в документации говорится, что необходимо вернуть -1, если произошла ошибка (типа со знаком). См., Например, libnet_get_ipaddr4
, libnet_get_prand
.
Однако яБез проблем перебираю такие функции:
if ((src_ip_addr = libnet_get_ipaddr4(l)) == -1) {
/* treat the failure*/
}
Я полагаю, что имеет место сравнение между -1, интерпретируемым как unsigned int, с возвращаемым значением, которое принимает то же значение;Сравнение верно.
Несмотря на то, что это, очевидно, работает, мой вопрос: Имеет ли это смысл?Почему? Как программист, как мне проверить возвращаемое значение, чтобы узнать, произошла ли ошибка?Правильно ли показан приведенный выше фрагмент кода?