мы можем передать беззнаковый символ в inet_ntop () - PullRequest
0 голосов
/ 06 февраля 2020
#include <arpa/inet.h>

char buf[INET6_ADDRSTRLEN] = {};
int af = AF_INET;
unsigned char addr[4] = {0x7f, 0x0, 0x0, 0x1};

printf("Address: %s\n", inet_ntop(af, addr, buf, sizeof buf));

Допустимо ли передавать массив unsigned char в inet_ntop() вызов? Приведенный выше код работает, но на странице руководства говорится, что API ожидает структуру сетевого адреса во втором аргументе.

1 Ответ

0 голосов
/ 06 февраля 2020

Я вижу, что одна реализация использует unsigned long в качестве одного члена struct in_addr addr. Если вы компилируете систему, где unsigned long не 4 байта - я мог бы предвидеть проблемы. Если в системе предъявляются более строгие требования к выравниванию для struct in_addr, чем char [], я снова могу предвидеть проблемы.

В конце концов, кажется, вы ищете гарантии того, что этот слабый код будет в порядке в будущем. Я sh вам удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...