2016-05-12 14 views
5

Ich stöberte durch Code, der von einem anderen Programmierercode geschrieben wurde, um zu versuchen und davon zu lernen. Ich lief schließlich in diesem Code:Was bedeutet "<?" and ">?" tun in C++

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

Dieser Code nicht kompilieren, und ich konnte es durch eine Änderung der Code dies funktioniert:

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; } 

Damit kann ich schon davon ausgehen, was der Code tun soll. Aber bei der Suche habe ich keine anderen Beispiele gefunden, die es auf diese Weise implementieren. War das nur ein schlechter Code, der nicht einmal compiliert, oder funktioniert das bei bestimmten Compilern (und wie?).

Vielen Dank.

+1

Sie sind GCC-Erweiterungen. – MikeCAT

Antwort

6

Sie sind nicht Teil von Standard C++, sondern GCC-Erweiterungen.

Von Deprecated Features:

Die G ++ minimalen und maximalen Operatoren (<? und >?) und deren Verbindung Formen (<?=) und >?=) sind veraltet und werden nun von G ++ entfernt. Code, der diese Operatoren verwendet, sollte geändert werden, um stattdessen std::min und std::max zu verwenden.

Beachten Sie, dass sie, wie der Titel sagt, veraltet sind.

+0

Veraltet seit GCC 4.0 von April 2005 – ColdCat

+0

Vielen Dank. Ich sollte gemäß der Seite, die du verlinkt hast, stattdessen std :: min und std :: Max verwenden. Nochmals vielen Dank für Ihre Hilfe. –