C扩展名:<? 和>? 运营商
我观察到有一点<?
和>?
GCC的运营商。 我怎样才能在GCC 4.5下使用这些? 他们被删除了,如果是的话,什么时候?
Offset block_count = (cpfs->geo.block_size - block_offset) <? count; cpfs.c:473: error: expected expression before '?' token
最近的手册说 :
G ++最小和最大运算符('
<?
'和'>?
')及其复合forms('<?=
')和'>?=
')已被弃用,现在已从G ++中删除。 使用这些运算符的代码应该修改为使用std::min
和std::max
来代替。
快速search过去的文档似乎表明,他们被删除了4.0版本(3.4.6包括他们,4.0.4不)。
早期的g++
( 不是 C编译器)迭代使用这些运算符来给你最小值或最大值,但是他们早已弃用了std::min
和std::max
。
基本上,他们等同于(但不可能对a
或b
进行双重评估):
a <? b --> (a < b) ? a : b a >? b --> (a > b) ? a : b
关于replace它们(你真的应该replace它们),你可以使用类似的东西:
Offset block_count = cpfs->geo.block_size - block_offset; if (block_count > count) block_count = count;
或等价使用std::min
。
我不喜欢使用C / C ++“扩展”(尤其是那些已被弃用和/或删除的扩展),因为它们将我与特定的语言实现联系起来。
在绝对适用的标准方法可用的情况下,绝不应使用非标准扩展。