枚举引用未定义,但位于包含的头文件中
C Enum reference undefined, yet sitting in a included header file?
所以,我在玩GNUTLS,它有这个enum:
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的include方面有这个。如果它是一个编译器没有找到它,为什么它会找到一些值,我如何让它找到它?如果不是,问题是什么?
如何查找?将-I/usr/local/include
添加到您的gcc命令行中,或将CFLAGS添加到makefile中,或者查看此处查看如何在eclipse
如果编译器找到了一些值而没有找到包含,可能它们在其他地方定义了。尝试重新定义它们,并在错误中查找另一个定义所在的位置。对于重新定义,您可以声明为不同的类型(如:typedef int whatever;
,以查看whatever
是否以及在何处声明),因为如果它是相同的类型定义,则可能被视为正向减速。
相关文章:
- 如何在h文件中包含.o对象文件
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- 为什么您需要C++头文件的包含保护
- 包含在.cpp文件中包含在 .h 文件时包含
- CMake:我们可以为一组不形成可执行文件或库的特定文件指定包含目录吗?
- 如何在 C++ 的 .so 文件中包含库
- 在头文件上包含 cpp 文件是否有缺点?
- 我可以(不)在.cpp文件中包含哪些内容?
- 生成文件缺少包含路径 尽管路径存在并已定义
- 不能在其他文件中包含结构
- 程序只适用于包含(无副作用)cout声明
- 如何比较文件中包含的下一个字符
- 如何检查每个头文件是否包含必需的包含文件?
- 使用 #pragma 一次,#ifndef 在同一文件中包含保护
- 在兼容的二进制文件中包含 CSV 文件
- .c文件应该包含它的.h文件已经包含的内容吗?
- #include 包含的头文件已包含的头文件是否常见?
- 如何告诉qmake在从dbus xml生成文件时包含标头
- cmake - 何时在 CMakeLists.txt 文件中包含include_directories
- 读取相对于包含文件的文件