[英]Type 'uint32_t' could not be resolved
我正在使用Eclipse(3.8.1)CDT中的C ++程序。 我在Debian 8上使用gcc编译器。我还使用了一个用C ++编写的名为opendnp3的开源库,它需要uint32_t来解析,因为它是几个方法调用和构造函数中的参数。
在opendnp对象中,intellisense不列出
__uint32_t
然而,DOES解决。
该类型在<cstdint>
定义( <cstdint>
解析就好了)。 我可以打开声明并清楚地看到' using ::uint32_t;
' 在那里。
在我的搜索中,我在'C / C ++ Build - > Settings - > Tool Settings - > GCC C ++ Compiler'下添加了-std=c++11
到'All options',我还重建了项目索引和重新启动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:'all'没什么可做的。
23:10:52构建完成(耗时133毫秒)
我知道这个问题已经过时了,但我觉得值得一提的是我遇到了这个问题并且能够解决它只是重建索引:右键单击项目,“索引”,“重建”。 你说你重建了索引并没有帮助; 重要的是,我在将“ -std=c++11
添加到“CDT GCC内置编译器设置”中指定的编译器的命令行后执行了此操作,可以通过打开项目属性并转到“C / C ++ General”找到“,”预处理器包括路径,宏等“,”提供商“选项卡。 如果我理解正确,你不会需要使用GCC版本6+,因为它默认为C ++ 14; 我自己使用的是GCC 5.4。
如果这没有帮助,调试问题的最佳途径可能是打开cstdint
的声明(包含文件本身 - 所以,右键单击#include
指令中的cstdint
,然后选择“打开声明”) - 这将显示你是包含的文件,如果通过预处理器宏( #ifdef
等)排除了灰色部分。 您可能会立即看到为什么uint32_t
不被视为已定义。 在我的例子中, __cplusplus
宏有一个不合适的值,这导致我将-std=c++11
添加到编译器命令行,如上所述 - 但我仍然需要在问题完全解决之前重建索引。
尝试在项目>属性>预处理器包含>提供程序中启用CDT GCC内置编译器设置 。
添加-std=c++11
,执行以下操作:
C / C ++通用 - >路径和符号 - >符号 - > GNU C ++
单击左侧的“ Add
”并粘贴__GXX_EXPERIMENTAL_CXX0X__
(确保将两个下划线附加并添加前缀)到“ Name
并将“ Value
留空。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.