Pregunta
Me observó que hubo en algún momento una <?
y operador >?
en GCC. ¿Cómo puedo usar esto bajo GCC 4.5? ¿Han sido removidos, y si es así, ¿cuándo?
Offset block_count = (cpfs->geo.block_size - block_offset) <? count;
cpfs.c:473: error: expected expression before ‘?’ token
Solución
decir :
Los operadores máximos ++ mínimo G y ( ‘
<?
’ y ‘>?
’) y sus formas compuestas ( ‘<?=
’) y ‘>?=
’) han sido desaprobado y ahora se eliminan de G ++. Código utilizando estos operadores debe ser modificado para su usostd::min
ystd::max
lugar.
Una búsqueda rápida de los últimos documentos parece indicar que se eliminaron alrededor de la versión 4.0 (3.4.6 ellos incluye, 4.0.4 no lo hace).
Otros consejos
iteraciones anteriores de g++
( no el compilador C) utiliza estos operadores para darle los valores máximo y mínimo o larga pero he estado en desuso en favor de std::min
y std::max
.
Básicamente, se equiparan a (pero sin la posibilidad de una doble evaluación de a
o b
):
a <? b --> (a < b) ? a : b
a >? b --> (a > b) ? a : b
En cuanto a la sustitución de ellos (y que realmente debe reemplazarlos), se puede usar algo como:
Offset block_count = cpfs->geo.block_size - block_offset;
if (block_count > count) block_count = count;
o equivalentes usando std::min
.
No soy un gran fan de la utilización de C / C ++ "Extensiones" (especialmente los que están en desuso y / o eliminado) ya que me atan a una implementación específica de la lengua.
Nunca se debe utilizar una extensión no estándar en el que un método estándar perfectamente adecuado está disponible.