C枚举参考未定义,但是坐在包含的头文件中?

时间:2015-08-11 22:52:31

标签: c++ c eclipse enums gnutls

所以,我正在玩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端有这个。如果它是编译器而不是查找它,为什么它会找到一些值,如何让它找到它?如果没有,问题是什么?

1 个答案:

答案 0 :(得分:0)

怎么找?将-I/usr/local/include添加到您的gcc命令行,或添加到makefile中的CFLAGS,或查看here for how to add it in eclipse

如果编译器在找不到包含的情况下找到某些值,则可能是在别处定义的。尝试重新定义它们,并查看其他定义所在的错误。 要重新定义,你可以声明为不同的类型(例如:typedef int whatever;,以查看是否以及whatever声明的内容)因为如果它是相同的typedef,它可以被视为前向减速。