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

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

我观察到,有在某些时候<?>?运营商GCC。如何在GCC 4.5下使用这些?他们被删除了,如果是的话,何时被删除?

Offset block_count = (cpfs->geo.block_size - block_offset) <? count;cpfs.c:473: error: expected expression before ‘?’ token


九州编程
浏览 388回答 2
2回答

米琪卡哇伊

最近的手册说:G ++最小和最大运算符('&nbsp;<?'和'&nbsp;>?')及其复合形式('&nbsp;<?=')和'&nbsp;>?=')已被弃用,现在已从G ++中删除。使用这些运算符的代码应该被修改为使用std::min而std::max不是代替。快速搜索过去的文档似乎表明它们在版本4.0中被删除(3.4.6包括它们,4.0.4没有)。

牧羊人nacy

早期的迭代g++(不是&nbsp;C编译器)使用这些运算符来为您提供最小值或最大值,但它们早已被弃用以支持std::min和std::max。基本上,它们等同于(但不双重评价的可能性a或b):a&nbsp;<?&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(a&nbsp;<&nbsp;b)&nbsp;?&nbsp;a&nbsp;:&nbsp;b a&nbsp;>?&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(a&nbsp;>&nbsp;b)&nbsp;?&nbsp;a&nbsp;:&nbsp;b在替换它们(你真的应该替换它们)方面,你可以使用类似的东西:Offset&nbsp;block_count&nbsp;=&nbsp;cpfs->geo.block_size&nbsp;-&nbsp;block_offset;if&nbsp;(block_count&nbsp;>&nbsp;count)&nbsp;block_count&nbsp;=&nbsp;count;或使用的等价物std::min。我不是很喜欢使用C / C ++“扩展”(特别是已被弃用和/或删除的扩展程序),因为它们将我绑定到该语言的特定实现。在完全适用的标准方法可用时,绝不应使用非标准扩展。
打开App,查看更多内容
随时随地看视频慕课网APP