2010-10-16 3 views
12

Ich lief über die folgenden Zeilen von C++ Code in einer Datei (nicht zusammenhängenden Zeilen), dass gcc 4.2.1 werde nicht akzeptieren:Sind>? oder <? legitime Operatoren in jedem C++ - Dialekt?

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

Sowohl <? und >? sind an verschiedenen Stellen im Code verwendet. Sie scheinen eine Abkürzung für die Zuweisung der kleineren (oder größeren) von zwei Werten zu sein, aber ich habe diese Operatorkombination noch nie gesehen. Irgendwelche Ideen, was das ist?

+0

Eine Google-Suche zeigt keinen einzelnen Treffer für diese Zeichenkombination. Vielleicht ist es ein Zeichencodierungsfehler während einer Ausschneide- und Einfügeoperation. –

+3

@Amarteep: Google zeigt auch keinen einzigen Treffer für ++. Sie können nicht nach Interpunktion suchen. – sepp2k

+0

@ sepp2K: Danke ... es würde nicht viel Sinn machen Interpunktion zu indexieren, oder? –

Antwort

20

Sie heißen min and max operators und waren Spracherweiterungen in früheren Versionen von gcc.

Sie werden nicht mehr unterstützt.

+0

darstellen. Ref: http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_5.html#SEC107 http://gcc.gnu.org/onlinedocs/ gcc-4.5.1/gcc/Veraltete-Features.html # Veraltete Features – Potatoswatter

+1

+1 für uns zu erleuchten, aber ich bin froh, dass sie von GCC gegangen sind. Ich würde es hassen zu sehen, dass C++ leidet, was mit Java passiert ist, als Microsoft ihre Visual J ++ - Erweiterungen ausführte. –

+3

Das ist ein lustiger Link. "Wenn Sie jedoch MIN und MAX als Makros schreiben, müssen Sie auch die Funktionsaufrufnotation für eine grundlegende arithmetische Operation verwenden." Min und Max sind "grundlegende arithmetische Operationen"? –

2

Es ist kein C++ Operator, das ist sicher. Es ähnelt fast einem Digraphen, aber sicher nicht einem gültigen. In jedem Fall würde ein Digraph, wenn er unterstützt wird, nur eine Interpunktion ergeben, nicht ein ganz neuer Operator.

Also, als Antwort auf Ihre Frage, vielleicht muss diese Datei von einem Präprozessor verarbeitet werden, der es in gültiges C++ konvertiert.

+0

Beispiele von Digraphen sind <% and %>, die {und} –