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
¿Fue útil?

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 uso std::min y std::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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top