无法解析类型"uint32_t"
Type 'uint32_t' could not be resolved
我正在Eclipse(3.8.1)CDT中开发一个C++程序。我在 Debian 8 上使用 gcc 编译器。我还使用了用 C++ 编写的名为 opendnp3 的开源库,这需要uint32_t解析,因为它是几个方法调用和构造函数中的参数。
在 opendnp 对象中,智能感知没有列出
但是,__uint32_t
确实解决了。
类型在<cstdint>
中定义(<cstdint>
解析得很好)。我可以打开声明,清楚地看到里面的'using ::uint32_t;
'。
在我的搜索中,我-std=c++11
添加到"C/C++ Build --> Settings -> Tool Settings -> GCC C++ Compiler"下的"所有选项"中,我还重建了项目索引并重新启动了 Eclipse,但它仍然没有解决。
以下是到目前为止的代码:编辑为一个简单的 HelloWorld 项目以帮助诊断问题
#include <iostream>
#include <cstdint> //has uint32_t defined
using namespace std;
int main() {
__uint32_t t = 0; //resolves just fine
uint32_t i = 0; //Type could not be resolved
auto x = "123"; //C++ 11 working
cout << "Foo!" << endl; // prints Foo!
return 0;
}
尝试生成后的 CDT 控制台:
23:10:52 **** 增量构建配置调试项目 FOO **** 全部制作 make:为"所有人"无所事事。
23:10:52 构建完成(耗时 133 毫秒)
我知道这个问题很旧,但我觉得值得一提的是,我遇到了这个确切的问题,并且只需重建索引即可解决它:右键单击项目,"索引","重建"。你说你已经重建了索引,但它没有帮助;重要的是,我在将-std=c++11
添加到"CDT GCC 内置编译器设置"中指定的编译器的命令行后执行此操作,可以通过打开项目属性并转到"C/C++ 常规"、"预处理器包括路径、宏等"、"提供程序"选项卡找到。如果我理解正确,您不需要使用 GCC 版本 6+ 执行此操作,因为它默认为 C++14;我自己正在使用GCC 5.4。
如果这没有帮助,调试问题的最佳途径可能是打开cstdint
的声明(包含文件本身 - 因此,右键单击#include
指令中的cstdint
,然后选择"打开声明") - 这将显示包含的文件,如果通过预处理器宏(#ifdef
等)排除了这些部分,则部分将灰显。您可以立即看到为什么uint32_t
不被视为已定义。就我而言,__cplusplus
宏的值不合适,这导致我如上所述向编译器命令行添加-std=c++11
-但我仍然需要在问题完全解决之前重建索引。
尝试在Project>Properties>Preprocessor Include>Providers中启用CDT GCC内置编译器设置。
添加-std=c++11
后,执行以下操作:
C/C++ 通用 -> 路径和符号 -> 符号 -> GNU C++
单击左侧的Add
并将__GXX_EXPERIMENTAL_CXX0X__
(确保附加和预置两个下划线)粘贴到Name
中,Value
留空。
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 如何从C++中的依赖类型中获得它所依赖的类型
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何获取std::result_of函数的返回类型
- 从父命名空间重载类型
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 访问者访问变体并返回不同类型时出错
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 模板元程序查找相似的连续类型名称
- 是否可以从int转换为enum类类型
- 从指针到 uint32 的类型转换
- uint32, int16, uint8 .为什么这些常用的数据类型没有进入标准
- 读取结构 -- uint32 不命名类型