#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
вместо этого включается препроцессор.