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
È stato utile?

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'uso std::min e std::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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top