2010-10-16 12 views
12

mi sono imbattuto nelle seguenti righe di codice C++ in un file (linee non contigui) che gcc 4.2.1 non accetterà:Are>? o <? operatori legittimi in qualsiasi dialetto C++?

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

Sia <? e >? sono utilizzati in vari punti del codice. Sembrano essere una scorciatoia per assegnare il più piccolo (o più grande) di due valori, ma non ho mai visto questa combinazione di operatori. Qualche idea su cosa sia?

+0

Una ricerca Google non genera un singolo colpo per quella combinazione di caratteri. Forse è un errore di codifica dei caratteri durante un'operazione di copia e incolla. –

+3

@Amardeep: Google non genera nemmeno un singolo hit per ++. Non puoi google per la punteggiatura. – sepp2k

+0

@ sepp2K: Grazie ... non avrebbe molto senso indicizzare la punteggiatura, vero? –

risposta

20

Sono chiamati min and max operators ed erano estensioni della lingua nelle versioni precedenti di gcc.

Non sono più supportati.

+0

Rif: 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 per illuminarci, ma sono contento che se ne siano andati da GCC. Mi dispiacerebbe vedere il C++ soffrire di quello che è successo a Java quando Microsoft ha fatto le sue estensioni Visual J ++. –

+3

Questo è un collegamento divertente. "Tuttavia, scrivere MIN e MAX come macro obbliga anche a usare la notazione di chiamata di funzione per un'operazione aritmetica fondamentale." Min e max sono "operazioni aritmetiche fondamentali"? –

2

Non è un operatore C++, questo è sicuro. Somiglia quasi a un digrafo, ma certamente non è valido. In ogni caso, un digrafo, se supportato, comporterebbe solo la punteggiatura, non un operatore completamente nuovo.

Quindi, in risposta alla tua domanda, forse questo file deve essere preelaborato da un preprocessore che lo converte in C++ valido.

+0

esempi di digrammi sono <% and %> che rappresentano {e} rispettivamente –