C 扩展名:?运营商
我观察到 GCC 中有时存在 和
>?
运算符。我如何在 GCC 4.5 下使用这些?它们是否已被删除?如果是,何时删除?
Offset block_count = (cpfs->geo.block_size - block_offset) <? count;
cpfs.c:473: error: expected expression before ‘?’ token
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最近的手册说:
快速搜索过去的文档似乎表明它们在 4.0 版本左右被删除(3.4.6 包含它们,4.0.4 不包含)。
Recent manuals say:
A quick search of the past documents seems to indicate that they were removed around version 4.0 (3.4.6 includes them, 4.0.4 does not).
g++
的早期版本(不是 C 编译器)使用这些运算符来提供最小值或最大值,但它们早已被弃用,取而代之的是std: :min
和std::max
。基本上,它们等同于(但是没有对
a
或b
进行双重评估的可能性):就替换它们而言(并且你真的< em>应该替换它们),您可以使用类似:
或使用
std::min
的等效项。我不太喜欢使用 C/C++“扩展”(尤其是那些已被弃用和/或删除的扩展),因为它们将我与该语言的特定实现联系起来。
在有完全足够的标准方法可用的情况下,您永远不应该使用非标准扩展。
Earlier iterations of
g++
(not the C compiler) used these operators for giving you the minimum or maximum values but they've long been deprecated in favour ofstd::min
andstd::max
.Basically, they equated to (but without the possibility of double evaluation of
a
orb
):In terms of replacing them (and you really should replace them), you can use something like:
or equivalents using
std::min
.I'm not a big fan of using C/C++ "extensions" (especially ones that have been deprecated and/or removed) since they tie me to a specific implementation of the language.
You should never use a non-standard extension where a perfectly adequate standard method is available.