【问题标题】:<stddef.h> std::ptrdiff_t' has not been declared<stddef.h> std::ptrdiff_t' 尚未声明
【发布时间】:2017-02-07 18:00:59
【问题描述】:

我已经制作了自己的源文件,并且正在尝试添加 stddef.h。编译时出现以下错误:

std::ptrdiff_t' 尚未声明。

我做错了什么?

【问题讨论】:

  • 您是否尝试过包含&lt;cstddef&gt;
  • C 头文件不填充 std 命名空间。
  • @Joachim Pileborg ,是的,我尝试包含 cstddef,但是 - 我的项目中需要来自 matlab simulink 编码器的库,这需要 stddef.h ....
  • 使用智能手机,我花了 5 秒 google 了它:en.cppreference.com/w/cpp/types/ptrdiff_t just include

标签: c++ std qnx ptrdiff-t


【解决方案1】:

问题在于您包含标准 C 标头,而不是标准 C++ 标头。

标准 C 标头不会将它们的符号放在 std 命名空间中,因为 C 没有这样的东西。

您有其他需要 C 标头的应用程序并不重要,如果您想使用 C++ std 命名空间中的 ptrdiff_t 类型别名,则必须包含 &lt;cstddef&gt;

或者停止使用std::ptrdiff_t 并使用来自&lt;stddef.h&gt; 的不合格和全局ptrdiff_t

【讨论】:

  • @infernalcucumber 是的。
  • 我知道,我是编程新手,但你的意思是如果我包含 ,它应该可以与需要 stddef.h 的库一起正常工作吗?
  • 我已经包含 而不是 ,但是当我包含从 matlab simulink 编码器生成的库时,在编译时我再次出现以下错误:'std::ptrdiff_t'尚未声明第 72 行,外部位置:D:\QNX650\target\qnx6\usr\include\stddef.h
猜你喜欢
  • 2022-01-20
  • 2018-03-09
  • 1970-01-01
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
相关资源
最近更新 更多