Frage

Ich beobachtete, dass irgendwann ein <? und >? Operator in GCC war. Wie kann ich diese unter GCC 4.5 verwenden? Haben sie entfernt worden ist, und wenn ja, wann?

Offset block_count = (cpfs->geo.block_size - block_offset) <? count;
cpfs.c:473: error: expected expression before ‘?’ token
War es hilfreich?

Lösung

Aktuelle Handbücher sagen :

  

Die G ++ minimale und maximale Operatoren ( ‚<?‘ und ‚>?‘) und ihre Verbindung Formen ( ‚<?=‘) und ‚>?=‘) waren veraltet und werden nun von G entfernt ++. Code dieser Operatoren verwendet, sollte stattdessen verwenden std::min und std::max geändert werden.

Eine schnelle Suche der letzten Dokumente scheint darauf hinzudeuten, dass sie sich um Version entfernt wurden 4.0 (3.4.6 enthält sie, 4.0.4 nicht).

Andere Tipps

Frühere Iterationen von g++ ( nicht der C-Compiler) verwendet, um diese Operatoren für Sie die Minimal- und Maximalwerte geben aber sie haben lange für std::min und std::max veraltet.

Im Grunde sie gleichzusetzen (aber ohne die Möglichkeit der Doppel Auswertung von a oder b):

a <? b       -->       (a < b) ? a : b
a >? b       -->       (a > b) ? a : b

Im Hinblick auf die sie zu ersetzen (und Sie wirklich sollte ersetzen), können Sie so etwas wie verwenden:

Offset block_count = cpfs->geo.block_size - block_offset;
if (block_count > count) block_count = count;

oder Äquivalente mit std::min.

Ich bin kein großer Fan von mit C / C ++ „Erweiterungen“ (vor allem diejenigen, die veraltet sind und / oder entfernt), da sie mich auf eine bestimmte Implementierung der Sprache binden.

Sie sollten niemals eine Nicht-Standard-Erweiterung verwenden, wo eine vollkommen ausreichend Standardmethode zur Verfügung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top