C Ссылка на перечисление не определена, но находится во включенном заголовочном файле?

Итак, я играю с 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. Если это компилятор, не находящий его, почему он находит некоторые значения и как мне заставить его найти его? Если нет, то в чем проблема?

0

Решение

как найти? добавлять -I/usr/local/include в вашей командной строке gcc, или CFLAGS в make-файле, или посмотрите здесь о том, как добавить его в затмении

Если компилятор находит некоторые значения, но не находит include, возможно, они определены в другом месте. попытайтесь переопределить их и посмотрите на ошибку, где другое определение.
для переопределения вы можете объявить другой тип (например: typedef int whatever;, чтобы увидеть, если и где whatever объявлено), поскольку, если это тот же typedef, его можно рассматривать как прямое замедление.

0

Другие решения


По вопросам рекламы [email protected]