【问题标题】:"'nullptr' was not declared in this scope" in GCC 7.5GCC 7.5 中的“'nullptr' 未在此范围内声明”
【发布时间】:2021-06-22 11:32:59
【问题描述】:

我使用的是 GCC 7.5。在构建包时,它抱怨整数和指针之间的有序比较,所以我将比较中的 0 更改为 nullptr。

但随后我收到一条错误消息,指出“'nullptr' 未在此范围内声明”。

尝试添加选项 -std=c++11 或 -std=c++14 没有帮助。

所有程序都是C++。

【问题讨论】:

标签: pointers gcc compiler-errors


【解决方案1】:

它抱怨整数和指针之间的有序比较

“有序比较”是指与><>=<= 进行比较。以这种方式将指针与空指针常量进行比较是没有意义的。

所以我将比较中的 0 更改为 nullptr

这不会使比较变得更有意义。以这种方式将指针与空指针常量进行比较也是没有意义的。

但随后我收到一条错误消息,指出“'nullptr' 未在此范围内声明”。

这在 gcc 7.5 上不会发生,除非你

  • 编译 C 而不是 C++ 或
  • 通过-std=c++98-std=c++03 某处或
  • gcc 安装损坏。

在任何情况下,您都可能想要修复比较(可能将>< 更改为!=),然后才考虑将0 替换为nullptr

【讨论】:

  • 根据构建日志,命令行中没有std选项。程序是用C语言的吗?即使文件扩展名为 .cpp?可以修吗?
  • 我是否也应该将
  • 我不知道谁会写像pointer <= 0 这样的条件以及为什么。这对我来说毫无意义,所以我不知道== 0!= 0 或其他任何东西是否会是一个很好的替代品(可能不是)。也许问一个单独的问题并提供足够的背景。
  • 所以,我通过删除有序比较来解决问题......现在一切都在构建,但我不知道它是否会工作。
  • 我应该把这个改成什么? if (mixer_handle >= 0)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2016-08-09
相关资源
最近更新 更多