2016-05-12 14 views
5

Stavo navigando attraverso un codice scritto da un altro codice di programmatori, per cercare di imparare da esso. Alla fine ho imbattuto in questo codice:Che cosa significa "<?" and ">?" do in C++

inline const FLOAT minx() const { return p1.x <? p2.x; } 
inline const FLOAT maxx() const { return p1.x >? p2.x; } 

Questo codice non compilato, e sono stato in grado di farlo funzionare modificando il codice a questo:

inline const FLOAT minx() const { return p1.x < p2.x ? p1.x : p2.x; } 
inline const FLOAT minx() const { return p1.x > p2.x ? p1.x : p2.x; } 

In questo modo posso già supporre cosa dovrebbe fare il codice. Ma cercando in giro non ho trovato nessun altro esempio che lo implementa in questo modo. Era solo un codice cattivo, che nemmeno compilava, o funziona davvero su alcuni compilatori (e come?).

Grazie.

+1

Sono estensioni GCC. – MikeCAT

risposta

6

Non fanno parte di standard C++, ma estensioni GCC.

Da Deprecated Features:

G ++ operatori massimi (<? e >?) e loro forme composte (<?=) e >?=) sono diventati obsoleti e sono ora rimosso dal G ++ e minimo. Il codice che utilizza questi operatori dovrebbe essere modificato per utilizzare std::min e std::max.

Si noti che, come dice il titolo, sono deprecati.

+0

Deprecato dal GCC 4.0 dall'aprile 2005 – ColdCat

+0

Grazie. Secondo la pagina che hai linkato, ora dovrebbero essere usati std :: min e std :: Max. Grazie ancora per il tuo aiuto. –