0

所以,我在玩 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 的 Includes 方面确实有它。如果它是编译器找不到它,为什么它会找到一些值,我如何让它找到它?如果不是,那是什么问题?

4

1 回答 1

0

怎么找?添加-I/usr/local/include到您的 gcc 命令行,或 makefile 中的 CFLAGS,或在此处查看如何在 eclipse 中添加它

如果编译器在没有找到包含的情况下找到了一些值,那么它们可能在其他地方定义。尝试重新定义它们,并查看另一个定义所在的错误。要重新定义,您可以声明为不同的类型(例如:typedef int whatever;,查看是否声明以及whatever声明的位置),因为如果它是相同的 typedef,则可以将其视为前向减速。

于 2015-08-11T23:05:10.500 回答