簡體   English   中英

無法解析類型'uint32_t'

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM