2013-07-01 21 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并且不允许它。