为了账号安全,请及时绑定邮箱和手机立即绑定

C扩展名:<?和>?运营商

C扩展名:<?和>?运营商

C
九州编程 2019-07-31 10:18:33
C扩展名:<?和>?运营商我观察到,有在某些时候<?和>?运营商GCC。如何在GCC 4.5下使用这些?他们被删除了,如果是的话,何时被删除?Offset block_count = (cpfs->geo.block_size - block_offset) <? count;cpfs.c:473: error: expected expression before ‘?’ token
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

最近的手册

G ++最小和最大运算符(' <?'和' >?')及其复合形式(' <?=')和' >?=')已被弃用,现在已从G ++中删除。使用这些运算符的代码应该被修改为使用std::minstd::max不是代替。

快速搜索过去的文档似乎表明它们在版本4.0中被删除(3.4.6包括它们,4.0.4没有)。


查看完整回答
反对 回复 2019-07-31
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

早期的迭代g++不是 C编译器)使用这些运算符来为您提供最小值或最大值,但它们早已被弃用以支持std::minstd::max

基本上,它们等同于(但双重评价的可能性ab):

a <? b       -->       (a < b) ? a : b
a >? b       -->       (a > b) ? a : b

在替换它们(你真的应该替换它们)方面,你可以使用类似的东西:

Offset block_count = cpfs->geo.block_size - block_offset;if (block_count > count) block_count = count;

或使用的等价物std::min

我不是很喜欢使用C / C ++“扩展”(特别是已被弃用和/或删除的扩展程序),因为它们将我绑定到该语言的特定实现。

在完全适用的标准方法可用时,绝不应使用非标准扩展。


查看完整回答
反对 回复 2019-07-31
  • 2 回答
  • 0 关注
  • 387 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信