本文介紹了無法解析類型uint32_t&;的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我正在使用Eclipse(3.8.1)CDT編寫一個C++程序。我在Debian8上使用的是GCC編譯器。我還使用了一個用C++編寫的名為opendnp3的開源庫,它需要uint32_t進行解析,因為它是幾個方法調(diào)用和構(gòu)造函數(shù)中的參數(shù)。
在opendnp對象中,IntelliSense未列出
__uint32_t
但是,確實可以解析。
該類型在<cstdint>
中定義(<cstdint>
可以很好地解析)。我可以打開聲明并清楚地看到其中的”using ::uint32_t;
“。
在我的搜索中,我已經(jīng)將-std=c++11
添加到‘C/C++Build–>設(shè)置->工具設(shè)置->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;
}
嘗試生成后的CDT控制臺:
23:10:52*Foo項目配置調(diào)試增量構(gòu)建*
全部實現(xiàn)
Make:不能為‘All’做任何事情。
23:10:52構(gòu)建完成(耗時133毫秒)
推薦答案
我知道這個問題很老了,但我覺得值得一提的是,我遇到了這個問題,并且只需重新構(gòu)建索引即可解決它:右鍵單擊項目,”索引”,”重建”。您說您已經(jīng)重建了索引,但它沒有幫助;重要的是,我是在將-std=c++11
添加到”CDT GCC內(nèi)置編譯器設(shè)置”中指定的編譯器的命令行后這樣做的,可以通過打開項目屬性并轉(zhuǎn)到”C/C++常規(guī)”、”預(yù)處理器包括路徑、宏等”、”提供者”選項卡來找到它。如果我理解正確的話,您不需要使用GCC版本6+,因為它默認使用C++14;我自己正在使用GCC 5.4。
如果這不起作用,調(diào)試該問題的最佳路徑可能是打開cstdint
的聲明(包含文件本身–因此,在#include
指令中右鍵單擊cstdint
,然后選擇”打開聲明”)–這將顯示包含的文件,如果通過預(yù)處理器宏(#ifdef
等)排除了這些部分,則這些部分將灰顯。您可能會立即看到為什么uint32_t
沒有被認為是定義的。在我的例子中,__cplusplus
宏的值不合適,這導(dǎo)致我如上所述將-std=c++11
添加到編譯器命令行–但在問題完全解決之前,我仍然需要重新生成索引。
這篇關(guān)于無法解析類型uint32_t&;的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,