2012-04-09 4 views
0

Was bedeutet reines C++? Bitte erläutern Sie die verschiedenen Versionen von C++ wie Visual C++ und GNU C++.Was ist reines C++?

Wie wäre es mit Compiler für diese Art von C++?

+0

Pure C++ ist die Grundsprache. Alles andere sind Bibliotheken (ob Standard oder nicht) Addons. Bitte verfeinern Sie die Frage. –

Antwort

8

Pure C++ bedeutet C++ nach dem ISO-Standard, wobei keine der herstellerspezifischen Erweiterungen verwendet wird.

Das bedeutet, es sollte über alle Implementierungen, die den Standard unterstützen, portabel sein. Andernfalls können Sie sich in einem bestimmten Anbieter, nicht eine schlechte Sache, aber Sie sollten die Auswirkungen dieser Entscheidung verstehen.

+0

* Übertragbar über ALLE Implementierungen, die die gleiche Endianz haben, es sei denn, Sie führen keine E/A durch. Endianness ist das größte Übel, das jemals für Portabilität geschaffen wurde :-( –

3

Reines C++ ist die Form von C++, die nur Semantik verwendet, die durch den ISO C++ Standard definiert ist.
Der in Pure C++ implementierte Code ist bei allen C++ - Compilant-Compilern vollständig portierbar.

Implementierungen dürfen eigene Erweiterungen zu den Funktionen des C++ - Standards bereitstellen. Jeder Compiler stellt dies in Form von Compiler-Erweiterungen bereit.

So

reine C++ = von Standard C++ bereitgestellt Eigenschaften
Visual C++ = Funktionen zur Verfügung gestellt von der Standard-C++ + MSVC Compiler-Erweiterungen.
GNU C++ = Funktionen von Standard C++ + GNU Compiler-Erweiterungen.

2

Es gibt keine "Pure C++". Entweder ist es C++ oder nicht. Es gibt einige Firmen, die Erweiterungen zu C++ gemacht haben, die neue Schlüsselwörter wie "WinMain" haben, die nicht Teil des C++ - Standards sind. Vielleicht meinen Sie das.

+1

Microsoft hat eine Menge Erweiterungen zu C++ hinzugefügt. Ich musste auf die Semantik einer Klasse mit dem Namen 'Ereignis' achten, weil sie entschieden, dass sie schlicht, unqualifiziert, nein _ vorher wollte Es ist einfach "Ereignis" als ein Schlüsselwort (aber irgendwie lässt du es trotzdem für andere Sachen verwenden.) Wie dumm ist das? SEHR dumm! Aber es ist neben dem Punkt. –

+1

Ja, C++ ist komplex genug, ohne dass Microsoft es hinzufügt ein großes Durcheinander wirklich. –

+2

Besonders in MSVC2k10. Ich bekomme Kompilierungswarnungen mit Schablonen manchmal, weil IntelliSense eine Einweihung nicht herausfinden kann. Warum interessiere ich mich genau? Was hat IntelliSense mit der tatsächlichen Kompilierung zu tun? Ich werde meine beenden –

0

Stanley Lipman beschreibt die Terminologie Microsoft bei http://msdn.microsoft.com/en-us/magazine/cc163852.aspx für ihre C++/CLI-Hybrid erfunden:

C++/CLI stellt eine Integration des Kansas und Oz von systemeigenen und verwalteten Programmierung. In dieser Iteration wurde dies durch eine Art separater, aber gleicher Gemeinschaft von Quell- und Binärelementen erreicht, einschließlich Mixed-Modus (Source-Level-Mix aus nativen und CTS-Typen sowie eine binäre Mischung aus nativen und CIL-Objektdateien). Pure-Modus (Source-Level-Mix von nativen und CTS-Typen, alle zu CIL-Objektdateien kompiliert), Native-Klassen (können CTS-Typen nur über eine spezielle Wrapper-Klasse enthalten) und CTS-Klassen (können native Typen nur als Zeiger enthalten).

So "Pure" C++ in einer Microsoft-Welt ist ein Begriff für eine bestimmte Mischung aus proprietären Features und ISO Standard C++ verfügt über.

Stanleys Beschreibung unterscheidet ihn von "Native" - ​​was mit anderen vorhandenen Antworten auf diese Frage als "rein" übereinstimmt. In der allgemeinen englischen Verwendung des Wortes wäre natürlich "rein" "nativ" = ISO-Standard. Angeblich hat Microsoft einen eklatant irreführenden Begriff gewählt, so dass Leute, die Tutorials/Verweise auf "Pure C++" befolgen, sich und ihren Code in proprietäre Microsoft-Erweiterungen einklinken und daher bei späteren Versuchen, sie auf andere Betriebssysteme zu portieren, frustriert sind .

Begriffe C++ wie Visual C++ und GNU C++.Wie wäre es mit Compilern für diese Art von C++?

Visual C++ ist Markenname von Microsoft für ihr C++ und C++/CLI-Compiler. GNU ist eine Organisation, die unzählige Open-Source-Softwareprodukte einschließlich GCC produziert - die GNU Compiler Collection, die einen C++ - Compiler enthält.