【发布时间】:2021-06-22 11:32:59
【问题描述】:
我使用的是 GCC 7.5。在构建包时,它抱怨整数和指针之间的有序比较,所以我将比较中的 0 更改为 nullptr。
但随后我收到一条错误消息,指出“'nullptr' 未在此范围内声明”。
尝试添加选项 -std=c++11 或 -std=c++14 没有帮助。
所有程序都是C++。
【问题讨论】:
标签: pointers gcc compiler-errors
我使用的是 GCC 7.5。在构建包时,它抱怨整数和指针之间的有序比较,所以我将比较中的 0 更改为 nullptr。
但随后我收到一条错误消息,指出“'nullptr' 未在此范围内声明”。
尝试添加选项 -std=c++11 或 -std=c++14 没有帮助。
所有程序都是C++。
【问题讨论】:
标签: pointers gcc compiler-errors
它抱怨整数和指针之间的有序比较
“有序比较”是指与> 或< 或>= 或<= 进行比较。以这种方式将指针与空指针常量进行比较是没有意义的。
所以我将比较中的 0 更改为 nullptr
这不会使比较变得更有意义。以这种方式将指针与空指针常量进行比较也是没有意义的。
但随后我收到一条错误消息,指出“'nullptr' 未在此范围内声明”。
这在 gcc 7.5 上不会发生,除非你
-std=c++98 或-std=c++03 某处或在任何情况下,您都可能想要修复比较(可能将> 或< 更改为!=),然后才考虑将0 替换为nullptr。
【讨论】:
pointer <= 0 这样的条件以及为什么。这对我来说毫无意义,所以我不知道== 0 或!= 0 或其他任何东西是否会是一个很好的替代品(可能不是)。也许问一个单独的问题并提供足够的背景。
if (mixer_handle >= 0)