2010-10-16 6 views
12

me encontré con las siguientes líneas de código C++ en un archivo (líneas no contiguos) que gcc 4.2.1 no aceptará:Are>? o <? operadores legítimos en cualquier dialecto C++?

int frame = blk <? mBlkCnt-1; 
mInsCnt = blk <? mBlkCnt; 
mInsCnt = mInsCnt+1 <? mBlkCnt; 
const int to_read = (mFileSz-byte_off) <? mBlkSz; 

Tanto <? y >? se utilizan en varios lugares en el código. Parecen ser una abreviatura para asignar los valores más pequeños (o más grandes) de dos, pero nunca he visto esta combinación de operadores. Alguna idea sobre lo que es esto?

+0

Una búsqueda en Google no arroja un solo golpe para esa combinación de caracteres. Quizás sea una falla de codificación de caracteres durante una operación de cortar y pegar. –

+3

@Amardeep: Google tampoco obtiene un solo hit para ++. No puedes buscar signos de puntuación en Google. – sepp2k

+0

@ sepp2K: Gracias ... no tendría mucho sentido indexar la puntuación, ¿verdad? –

Respuesta

20

Se llaman min and max operators y eran extensiones de idioma en versiones anteriores de gcc.

Ya no son compatibles.

+0

Refs: http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_5.html#SEC107 http://gcc.gnu.org/onlinedocs/ gcc-4.5.1/gcc/Deprecated-Features.html # Deprecated-Features – Potatoswatter

+1

+1 para informarnos pero me alegro de que se hayan ido de GCC. No me gustaría ver a C++ sufrir lo que le sucedió a Java cuando Microsoft hizo sus extensiones de Visual J ++. –

+3

Ese es un enlace divertido. "Sin embargo, escribir MIN y MAX como macros también te obliga a usar la notación de llamada a función para una operación aritmética fundamental". Min y Max son "operaciones aritméticas fundamentales"? –

2

No es un operador de C++, eso es seguro. Casi se parece a un dígrafo, pero ciertamente no es válido. En cualquier caso, un dígrafo, si es compatible, solo daría lugar a signos de puntuación, no un operador completamente nuevo.

Por lo tanto, en respuesta a su pregunta, quizás este archivo deba ser preprocesado por algún preprocesador que lo convierta en C++ válido.

+0

ejemplos de dígrafos son <% and %> que representan {y} respectivamente –

Cuestiones relacionadas