我观察到有在某一时刻在一个GCC和<?操作者>?。我如何才能使用这些GCC 4.5下?他们有没有被删除,如果是这样,是什么时候?

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

解决方案

最近手册

  

在G ++最小和最大操作符(“<?”和“>?”)和它们的化合物的形式(“<?=”)和“>?=”)已过时,并且现在选自G除去++。使用这些运算符的代码应被修改为使用std::minstd::max代替。

一个快速搜索过去的文件似乎表明,它们是围绕4.0版本中删除(3.4.6包括他们,4.0.4没有)。

其他提示

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 ++“扩展”,因为他们把我绑到特定的实现语言(尤其是已经过时的和/或删除的)的大风扇。

您不应该使用一个非标准扩展其中完全足够标准方法是可用的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top