2013-07-01 28 views
5

它,畢竟,拿在STDDEF.H和C++ config.h中定義:Eclipse CDT的代碼分析認爲,爲size_t是模糊

C++的config.h:

namespace std 
{ 
    typedef __SIZE_TYPE__  size_t; 
    typedef __PTRDIFF_TYPE__ ptrdiff_t; 

#ifdef __GXX_EXPERIMENTAL_CXX0X__ 
    typedef decltype(nullptr) nullptr_t; 
#endif 
} 

stddef .H:

typedef __SIZE_TYPE__ size_t; 

因此,當一個文件不using namespace std是,Eclipse CDT代碼分析會很困惑,並表示該符號是不明確的。我不知道gcc如何解決這個問題,但是有沒有人對eclipse代碼分析的做法有任何建議?

+0

在代碼中顯示size_t只在C++ config.h中定義。 __SIZE_TYPE__在stddef.h中定義,並在C++ config.h中使用 - 實際問題是什麼 – Mark

+0

@Mark Oops,複製到錯誤的行中。現在修復。謝謝! – Chris

+0

在文件中,你是否在使用? – Mark

回答

4

我通過完全禁用代碼分析中的錯誤來解決這個問題。

項目 - >屬性 - > C/C++常規 - >代碼分析

取消選中 '不明確的問題'

1

它主要是,但不完全,真實的有效的C代碼也是有效的C++代碼。你遇到了一個不正確的情況。這個問題在這種情況下有一個非常好的答案:Repeated typedefs - invalid in C but valid in C++?還值得注意的是,C11將解決這種不兼容問題。

結果的確是,這種行爲在CDT代碼分析中處於缺陷和缺陷之間。 CDT應該知道代碼是C++並且允許語法,但它好像認爲它是C並且不允許它。