Ошибка после включения /usr/include/openssl в проект. (Новичок)

#c #eclipse #openssl #eclipse-cdt

#c #затмение #openssl #eclipse-cdt #eclipse

Вопрос:

Я использую Eclipse (2020-06) и CDT на рабочем столе Fedora и пытаюсь изучить C .

В моем коде следующие строки компилируются без проблем:

   rc = read(Socket_ID, amp;ts, BUFSIZ);
  if (rc == -1) {
    warnx("Reading timestamp failed");
    Socket_ID = -1;
  }
  

После добавления /usr/include/openssl в настройки сборки C / C я получаю эту ошибку

 error: ‘warnx’ was not declared in this scope
  

На данный момент я даже не включил openssl/md5.h

После удаления строки ‘warnx’ код компилируется без ошибок.

Означает ли это, что openssl нельзя использовать в CPP-проекте или Eclipse нужны дополнительные настройки?

Ben

Ответ №1:

Нет, это не значит, что, но вам не нужно добавлять /usr/include/openssl в настройки включения, потому что openssl уже упоминается в

 #include <openssl/md5.h>
  

Только если вы сказали

 #include <md5.h>
  

вам нужно добавить /usr/include/openssl в ваши настройки.

Кажется, довольно распространенное недоразумение, что каталог ‘library’ должен быть указан как в настройках включения, так и в #include директиве, но это не так.

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

1. Теперь, когда я просмотрел его подробнее, я почти уверен, что добавление /usr/include/openssl в список включенных папок переместилось openssl/err.h вперед err.h , когда препроцессор ищет включает. Поэтому, когда #include<err.h> необходимо получить объявление warnx , openssl/err.h вместо этого включается препроцессор.