Итак, я играю с GNUTLS, и у него есть это перечисление:
typedef enum {
GNUTLS_PK_UNKNOWN = 0,
GNUTLS_PK_RSA = 1,
GNUTLS_PK_DSA = 2,
GNUTLS_PK_DH = 3,
GNUTLS_PK_EC = 4
} gnutls_pk_algorithm_t;
сидит в главном заголовочном файле (gnutls.h, версия 3.3.17). Я ссылаюсь на это здесь:
unsigned int bits = gnutls_sec_param_to_pk_bits(GNUTLS_PK_DH, GNUTLS_SEC_PARAM_LEGACY);
(прямо из примера). У меня есть #include <gnutls/gnutls.h>
и что все, кажется, ссылаются нормально (другие перечисления в порядке, за исключением GNUTLS_X509_FMT_PEM
). Я читал что-то о компиляторе, не видя gnutls.h, и это в /usr/local/include
и не /usr/include
Тем не менее, у меня есть это на стороне Включения в Eclipse. Если это компилятор, не находящий его, почему он находит некоторые значения и как мне заставить его найти его? Если нет, то в чем проблема?
как найти? добавлять -I/usr/local/include
в вашей командной строке gcc, или CFLAGS в make-файле, или посмотрите здесь о том, как добавить его в затмении
Если компилятор находит некоторые значения, но не находит include, возможно, они определены в другом месте. попытайтесь переопределить их и посмотрите на ошибку, где другое определение.
для переопределения вы можете объявить другой тип (например: typedef int whatever;
, чтобы увидеть, если и где whatever
объявлено), поскольку, если это тот же typedef, его можно рассматривать как прямое замедление.