статическое объявление ‘close’ следует за нестатическим объявлением static inline int close (int sock)

#c #zephyr-rtos

#c #zephyr-rtos

Вопрос:

Я разрабатываю на c около 6 месяцев, и я очень смущен тем, что здесь вообще происходит. Я получаю эту ошибку при попытке включить сокет.h заголовочные файлы.

 static inline int close(int sock)
{
    return zsock_close(sock);
}
  

это тот метод, с которым, похоже, возникают проблемы? и я получаю это обратно из сборки.

 In file included from /home/jordan/zephyr/zephyr/include/posix/pthread.h:13:0,
                 from /home/jordan/thrift/src/c/zephyr/mbedtlstest/../../../../include/thrift/os.h:10,
                 from /home/jordan/thrift/src/c/zephyr/mbedtlstest/../../../../include/thrift/types.h:4,
                 from /home/jordan/thrift/src/c/zephyr/mbedtlstest/../../../../include/thrift/ssl/../transport.h:4,
                 from /home/jordan/thrift/src/c/zephyr/mbedtlstest/../../../../include/thrift/ssl/transport.h:4,
                 from /home/jordan/thrift/src/c/ssl/transport.c:1:
/home/jordan/zephyr/zephyr/include/posix/unistd.h:21:12: note: previous declaration of ‘close’ was here
  

Комментарии:

1. Вы не можете назвать свою функцию close . Это имя уже занято.

2. Попробуйте close(int sock) —> JD_close(int sock)

Ответ №1:

Как заявил пользователь3386109, close — это функция библиотеки C POSIX, которая используется для закрытия файловых дескрипторов. Вы можете найти более подробную информацию об этом здесь:-

https://linux.die.net/man/2/close

Правильный способ исправить это — переименовать вашу функцию во что-то уникальное, что раньше не использовалось.