毕竟,它确实在stddef.h和c ++ config.h中定义:
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是如何解决这个问题的,但是对于日食代码分析有什么建议吗?
答案 0 :(得分:4)
我通过在代码分析中完全禁用该错误来解决这个问题。
项目 - >属性 - > C / C ++一般 - >代码分析
取消选中“不明确的问题”
答案 1 :(得分:1)
有效的C代码也是有效的C ++代码,但实际上并非完全如此。你遇到的情况并非如此。对于这种情况的不同,这个问题有一个非常好的答案:Repeated typedefs - invalid in C but valid in C++?值得注意的是,C11将解决这种不兼容问题。
实际上,结果是这种行为介于CDT代码分析中的缺陷和缺陷之间。 CDT应该知道代码是C ++并允许语法,但似乎它认为它是C并且不允许它。