Транслирую все через makefile. На моём рабочем (и домашнем) всё транслируется без проблем
Перенёс все файлы на "Малинку" (Raspberry Pi 4). Почти все странслировались без проблем. И правильно работают.
Кроме двух. В которых выскакивает одна и та же ошибка.
Код: Выделить всё
$ make
gcc -std=c99 -Wall -Wextra -O2 -o send_udp send_udp.c
send_udp.c: In function ‘process_file’:
send_udp.c:204:53: error: incompatible type for argument 5 of ‘sendto’
i=sendto(sockfdu, buf, head_pup.len, 0, (void *)&send_f, sizeof(send_f));
^~~~~~~~~~~~~~~
In file included from send_udp.c:8:
/usr/include/arm-linux-gnueabihf/sys/socket.h:153:44: note: expected ‘__CONST_SOCKADDR_ARG’ {aka ‘union <anonymous>’} but argument is of type ‘void *’
int __flags, __CONST_SOCKADDR_ARG __addr,
~~~~~~~~~~~~~~~~~~~~~^~~~~~
make: *** [makefile:104: send_udp] Ошибка 1
Но самое непонятное в том, что в других программах аналогичный вызов функции sendto не вызывает никаких вопорсов.
А всего
Код: Выделить всё
$ grep sendto *.c | wc
70 612 7550
В чём может быть дело?
P.S. Единственное замеченное мное "принципиальное" отличие компилятора в Raspbian от компилятора Debian -- char -- беззнаковое 8-битное.
И ещё были предупреждения при выводе переменных типа int64_t -- там система 32-битная, поэтому это long long int, а на 64-битной это просто long int. Соответвенно непонятно, что использовать: "%ld" или "%lld". Но это всё решаемо. А вот почему в двух программах компилятор ругается на sendto понять не могу.