Domanda
I osservato che non vi era ad un certo punto un <?
e gestore >?
in GCC. Come posso utilizzare questi sotto GCC 4.5? Sono stati rimossi, e se sì, quando?
Offset block_count = (cpfs->geo.block_size - block_offset) <? count;
cpfs.c:473: error: expected expression before ‘?’ token
Soluzione
dire :
Il loro forme composte ( ‘
<?
’) e ‘>?
’) ++ minimo G e operatori massimi ( ‘<?=
’ e ‘>?=
’) e sono stati obsoleti e sono ora rimosso dal G ++. Codice utilizzando questi operatori deve essere modificato per l'usostd::min
estd::max
invece.
Una rapida ricerca dei documenti del passato sembra indicare che sono stati rimossi intorno versione 4.0 (3.4.6 li include, 4.0.4 non fa).
Altri suggerimenti
iterazioni precedenti di g++
( non il compilatore C) utilizzato questi operatori per darvi i valori minimo o ma hanno da tempo sconsigliato a favore std::min
e std::max
.
Fondamentalmente, loro equiparata a (ma senza la possibilità di doppia valutazione di a
o b
):
a <? b --> (a < b) ? a : b
a >? b --> (a > b) ? a : b
In termini di loro sostituzione (e davvero dovrebbe sostituirli), si può usare qualcosa come:
Offset block_count = cpfs->geo.block_size - block_offset;
if (block_count > count) block_count = count;
o equivalenti utilizzando std::min
.
Io non sono un grande fan di utilizzare C / C ++ "estensioni" (specialmente quelli che sono stati deprecate e / o rimossi) in quanto mi legano ad una specifica implementazione del linguaggio.
si dovrebbe mai usare un'estensione non standard in cui un metodo standard perfettamente adeguato è disponibile.