【问题标题】:Eclipse CDT code analysis thinks size_t is ambiguousEclipse CDT代码分析认为size_t有歧义
【发布时间】:2015-10-09 00:41:20
【问题描述】:

毕竟,它确实是在 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 是如何解决这个问题的,但是有人对如何进行 eclipse 代码分析有任何建议吗?

【问题讨论】:

  • 在您显示的代码中 size_t 仅在 c++config.h 中定义。 SIZE_TYPE 在 stddef.h 中定义并在 c++config.h 中使用 - 实际问题是什么
  • @Mark Oops,复制到错误的行。现在修好了。谢谢!
  • 你在文件的什么地方使用?

标签: eclipse-cdt


【解决方案1】:

我只是通过在代码分析中完全禁用该错误来解决这个问题。

项目 -> 属性 -> C/C++ 常规 -> 代码分析

取消选中“不明确的问题”

【讨论】:

    【解决方案2】:

    有效的 C 代码也是有效的 C++ 代码在很大程度上是正确的,但并非完全正确。你遇到了一个不正确的案例。这个问题对这种情况下的区别有一个很好的答案:Repeated typedefs - invalid in C but valid in C++? 另外值得注意的是,C11 将修复这个不兼容问题。

    实际上,结果是这种行为介于 CDT 代码分析中的缺陷和缺陷之间。 CDT 应该知道代码是 C++ 并允许语法,但似乎它认为它是 C 并且不允许它。

    【讨论】:

      猜你喜欢
      • 2011-07-29
      • 1970-01-01
      • 2012-09-15
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 2011-07-21
      相关资源
      最近更新 更多