C扩展名:<?和>?运营商我观察到,有在某些时候<?和>?运营商GCC。如何在GCC 4.5下使用这些?他们被删除了,如果是的话,何时被删除?Offset block_count = (cpfs->geo.block_size - block_offset) <? count;cpfs.c:473: error: expected expression before ‘?’ token
2 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
早期的迭代g++
(不是 C编译器)使用这些运算符来为您提供最小值或最大值,但它们早已被弃用以支持std::min
和std::max
。
基本上,它们等同于(但不双重评价的可能性a
或b
):
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 ++“扩展”(特别是已被弃用和/或删除的扩展程序),因为它们将我绑定到该语言的特定实现。
在完全适用的标准方法可用时,绝不应使用非标准扩展。
- 2 回答
- 0 关注
- 387 浏览
添加回答
举报
0/150
提交
取消