2009-08-05 2 views
3

Warum funktionieren >?= und <?= nicht in VC++? aber sie funktionieren gut in gcc/g ++ wie: a>?=b; sind sie richtige Verwendungen?Warum>? = Und <? = Funktionieren nicht in VC++?

+3

Was macht es in gcc? Habe das noch nie gesehen. –

+0

Wenn diese Regeln veraltet sind, wie bdonlan sagt, würde ich erwarten, dass g ++ eine Warnung ausgibt, wenn Sie sie verwenden. Ich empfehle das Kompilieren mit "-Wall" (warne alle, d. H. Zeige alle Warnungen) und versuche Code zu schreiben, der keine Warnungen erzeugt. Kann jemand bestätigen, dass g ++ eine Warnung ausdruckt, wenn Sie diese Operatoren verwenden? – MatrixFrog

+0

a>? = B <==> a = MIN (a, b) Ich benutze vim mit g ++ und kompiliere mit "-Wall", aber ich sehe nie eine Warnung. –

Antwort

7

Da sind die alten GC++-specific extensions für Minimum und Maximum.

Von 6. Extensions to the C++ Language:

Der GNU Compiler stellt diese Erweiterungen der Sprache C++ (und auch die meisten der C-Spracherweiterungen in C++ Programme verwenden können). Wenn Sie Code schreiben möchten, der prüft, ob diese Funktionen verfügbar sind, können Sie den GNU-Compiler genauso wie für C-Programme testen: Suchen Sie nach einem vordefinierten Makro __GNUC__. Sie können auch __GNUG__ verwenden, um speziell für GNU C++ zu testen (siehe Abschnitt 'Vordefinierte Makros' in Der GNU C-Präprozessor).

Stattdessen sollten Sie std::min und std::max verwenden.

13

Diese Operatoren sind nicht standardisiert und werden in GCC nicht weiter unterstützt. Sie werden überhaupt nicht mehr in G ++ unterstützt. Sie sollten stattdessen std :: min und std :: max verwenden. Achten Sie darauf, NOMINMAX auf disable the window-specific macros zu setzen, die mit ihnen in Konflikt stehen.