Unterschied zwischen den ganzen C++-Compilern.



  • Hallo!

    Es tut mir leid für die etwas (sehr) dumme Frage. Ich verstehe einfach nicht was der Unterschied zwischen den ganzen Compilern ist, MinGW, CyGwin, MS Compiler VC8 IMO, GNU GCC. Mir ist klar das manche Compiler für Linux bzw. Unix gedacht sind, aber wo liegt der Unterschied zur effektivität ? In wiefern arbeiten Compiler anders, bzw. worin unterscheiden sie sich. Compilieren tun doch alle Compiler oder nicht ?! Es geht mir hier nicht um die IDE, nur um den Compiler.

    Und dann noch eine IDE Frage, wenn ich MS Visual C verwende, muss ich mir extra die platform SDK runterladen damit ich z.b. die Datei windows.h hab (weil ich die gerade gebraucht habe), warum aber extra so viel runterladen und installieren wenn ich auch einfach Code::Blocks verwenden kann, dort ist das schon dabei. Ich bin ganz verwirrt von den ganzen Compilern und IDE\\'s, ich glaub das war heute zu viel für meinen kleinen Kopf 😕



  • Bei Java zb verwendet doch jede IDE den javac.exe Compiler, dort gibt es doch auch keine anderen ^^ warum aber für C ?? (Ausgenommen wegen des Betriebssystems, es gibt ja für Windows mehr als nur einen) Ich hoffe ihr könnt Licht in meinen dunkeln Kopf bringen, oder mir einen Link schicken wo ich mich einelsen kann.



  • Danke fürs Lesen und für die Zeit :xmas1: frohe Weihnachten :xmas2:

    Sry das ich 3 mal posten musste, aber als ich versuchte alles in einem Post zu schreiben, kam immer die Meldung "Forum existiert bereits", wahrschienlich war der Text zu lange ?!

    Deswegen auch der erste Post 😕 sry ich hab das nicht gewußt !!

    Bitte um entschuldigung !



  • Warum gibt es mehrere Grafikprogramme? Warum gibt es mehrere Sorten Klopapier im Supermarkt? Warum hat der Gemüsehändler diverse Sorten Tomaten? 🙄 🙂

    Kompilieren tun alle (sonst wären es ja keine Compiler). Aber es gibt unterschiede zB in den unterstützen Plattformen, in der Umsetzung der Standards, in der Qualität der generierten Dateien, in Compilererweiterungen etc.

    Für Java gibt es ja auch durchaus mehrere JVMs.

    btw. Cygwin ist kein Compiler, sondern eine POSIX-kompatible Laufzeitumgebung für Windoze. Als Compiler wird idr der GCC verwendet. MinGW ist auch nur ein GCC, der für Windows portiert wurde.

    P.S. Ich hab mal das "test"-Posting entfernt.



  • Danke fürs entfernen !

    Ok also das mit den unterstützenden Plattformen versteh ich, aber ich dachte ein Compiler sollte die Standards genau so übersetzen wie es festgelegt ist, und wie sich die Qualität der gernerierten Dateien unterscheiden kann versteh ich auch nicht, und vor allem woran man das erkennt (aber ich glaub das spielt erst eine Rolle bei größeren Projekten/Programmen).
    Und was mit Compilererweiterungen gemeint ist versteh ich leider auch nicht 😕



  • Achja und was ich auch noch gerne wissen wollen wrürde ^^

    Wie gesagt bei der IDE Code::Blocks ist doch die platform SDK von MS schon dabei, aber wo kann ich den nachlesen welche libs sonst noch dabei sind bei Code::Blocks ? (außer die header datein durchsuchen)



  • Das sind ja ganz schön viele Fragen!

    Warum verschiedene Compiler Programme erzeugen, die sich gleich verhalten, aber nicht (byteweise) gleich sind?
    Das liegt ganz einfach daran, dass man Algorithmen in Sprachen auf verschiedene (sogar unendlich viele verschiedene) Weisen ausdrücken kann. Das gilt auch für die Zielsprache der Übersetzung. Die Unterschiede ergeben sich hauptsächlich aus dem Versuch, zu optimieren.

    Woran man die Qualität eines Maschinenprogramms erkennt?
    Eine Wertungsfrage. Ist dir zB eine möglichst kleine Datei oder ein möglichst kurze Laufzeit wichtiger?

    Compilererweiterungen?
    Sollten eigentlich compiler-spezifische Spracherweiterungen heißen.

    Ich hoffe ihr könnt Licht in meinen dunkeln Kopf bringen

    Das macht Wikipedia recht gut 😉

    Woher erfahre ich XXX zu YYY von Microsoft?
    MSDN Bibliothek.



  • test13 schrieb:

    Bei Java zb verwendet doch jede IDE den javac.exe Compiler,

    Nein, stimmt nicht! Eclipse hat seinen eigenen Java-Compiler! Somit ist die ganze Theorie für'n Arsch.



  • Artchi schrieb:

    test13 schrieb:

    Bei Java zb verwendet doch jede IDE den javac.exe Compiler,

    Nein, stimmt nicht! Eclipse hat seinen eigenen Java-Compiler! Somit ist die ganze Theorie für'n *****.

    ^^ Sry wußte ich nicht, ich verwende kein Eclipse (zur Zeit noch nicht), aber bei Java wird man mit der Frage "Welchen Compiler soll ich verwenden?" zumindest nicht so Früh konfrontiert.

    @cheopz
    Danke für die Erklärung, und Links. Das es so viele (unendliche) verscheidene Wege gibt Algorithmen verschieden in Maschinencode darzustellen wußte ich nicht.

    Aber noch eine Frage ^^

    Ist bei Code::Blocks die Win Api schon dabei ?? (wegen diversen Headerfiles)
    Auf der HP finde ich keine Infos dazu welche Bibliotheken schon dabei sind.

    Oder sind die Header-dateien wie windows.h mmsystem.h etc. dabei, weil es für Qt oder wxWidget gebraucht wird ??

    Danach ist schluss mit den Fragen (hoffentlich) ^^



  • Ist bei Code::Blocks die Win Api schon dabei ?? (wegen diversen Headerfiles)

    Bei Code::Blocks ist afaik mingw dabei, was wiederum ein gcc für Windows ist.
    Der hat auch alle die Windows-Header dabei.

    Die Bibliotheken (die Dinger mit der Maschinensprache, die auf dll enden) hat dein Windows sowieso.

    Oder sind die Header-dateien wie windows.h mmsystem.h etc. dabei, weil es für Qt oder wxWidget gebraucht wird ??

    Wenn dann nur mittelbar.



  • cheopz schrieb:

    Ist bei Code::Blocks die Win Api schon dabei ?? (wegen diversen Headerfiles)

    Bei Code::Blocks ist afaik mingw dabei, was wiederum ein gcc für Windows ist.
    Der hat auch alle die Windows-Header dabei.

    Die Uralte RC2 von Codeblocks enthält eine veraltete Version von MinGW. Die aktuell offiziell empfohlenen Nightlys kommen ohne Compiler, man muss sich einen MinGW von http://mingw.org/ installieren (oder einen anderen der unterstützten Compiler). Beim MinGW ist dann auch der offiziell dokumentierte Teil der WinAPI dabei. (Undokumentierte Features, die das WINE_Projekt z.B. verwendet sind beim MinGW nicht enthalten)


Anmelden zum Antworten