无法解析类型'uint32_t'

Eri*_*kJL 5 c++ eclipse gcc eclipse-cdt c++11

我正在使用Eclipse(3.8.1)CDT中的C++程序.我在Debian 8上使用gcc编译器.我还使用了一个用C++编写的名为opendnp3的开源库,它需要uint32_t来解析,因为它是几个方法调用和构造函数中的参数.

在opendnp对象中,intellisense不列出

__uint32_t 然而,DOES解决了.

类型定义在<cstdint>(<cstdint>解析得很好).我可以打开宣言并清楚地看到' using ::uint32_t;'在那里.

在我的搜索中,我-std=c++11在"C/C++构建 - >设置 - >工具设置 - > GCC C++编译器"下添加了"所有选项",我还重建了项目索引并重新启动了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;
}
Run Code Online (Sandbox Code Playgroud)

构建尝试后的CDT控制台:

23:10:52****增量构建配置调试项目FOO****使所有make:'all'没什么可做的.

23:10:52构建完成(耗时133毫秒)

dav*_*mac 9

我知道这个问题很老,但我觉得值得一提的是我遇到了这个确切的问题并且能够通过重建索引来解决它:右键单击项目,“索引”,“重建”。你说你重建了索引,但没有帮助;重要的是,我在添加-std=c++11到“CDT GCC 内置编译器设置”中指定的编译器的命令行后执行此操作,可以通过打开项目属性并转到“C/C++ 常规”、“预处理器包含路径”、宏等”,“提供程序”选项卡。如果我理解正确,您不需要使用 GCC 版本 6+ 来执行此操作,因为它默认为 C++14;我自己正在使用 GCC 5.4。

如果这没有帮助,调试问题的最佳路径可能是打开声明cstdint(包含文件本身 - 因此,cstdint#include指令中右键单击,然后选择“打开声明”) - 这将显示包含的文件,如果它们被预处理器宏(#ifdef等)排除,则部分会变灰。您可能会立即看到为什么uint32_t不被视为已定义。在我的例子中,__cplusplus宏有一个不合适的值,这导致我-std=c++11如上所述添加到编译器命令行 -我仍然需要在问题完全解决之前重建索引。


Lau*_*enz 4

尝试在“项目”>“属性”>“预处理器包含”>“提供程序”中启用CDT GCC 内置编译器设置。