Указание типов аргументов функций на примере bind () - C (СИ)
Формулировка задачи:
gcc version 4.2.1 20070719
почему при таком вызове компилер генерирует warning: passing argument 2 of 'bind' from incompatible pointer type
нагуглил вот что:
If we omit the cast "(struct sockaddr *)," the C compiler generates a warning of the form "warning: passing arg 2 of ’bind’ from incompatible pointer type," assuming the system’s headers have an ANSI C prototype for the bind function.
но ясности всё равно никакой.
заранее благодарю.
#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> struct sockaddr_in address; ... ... ... bind(sock,&address,sizeof(address)); ... ... ...
Решение задачи: «Указание типов аргументов функций на примере bind ()»
textual
Листинг программы
const int optval = 1; setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(int)); - естьм ответ на мой вопрос
Объяснение кода листинга программы
Ваш код выполняет следующие действия:
- Объявляет константную переменную
optvalтипаintсо значением 1. - Вызывает функцию
setsockopt()для установки опции сокета. - Передает в функцию
setsockopt()следующие аргументы:sockfd: дескриптор сокета, который должен быть повторно использован.SOL_SOCKET: уровень сокета, на котором будет применяться опция.SO_REUSEADDR: опция сокета, которую нужно установить.&optval: указатель на переменнуюoptval, которая содержит значение опции.sizeof(int): размер переменнойoptvalв байтах, который используется для правильной передачи значения опции в функцию. Таким образом, код устанавливает опциюSO_REUSEADDRдля указанного сокета на значение 1, что позволяет повторно использовать адрес привязки сокета.