C++ auf allen Betriebssystemen?



  • Guten Abend, bin neu hier,

    und ich bin am überlegen C++ zu lernen.

    Meine Voraussetzung dafür ist aber, dass die Sprache Plattformunabhängig ist.

    Ich habe mich auch schon informiert aber die ganzen Artikel und Blogs waren sich nicht einig. (Einmal ja, anderesmal Nein)

    Meine Frage ist nun, läuft ein C++ Programm auf allen Betriebssystem?(Windows/Linux/Mac OS)

    Und wie sieht es mit Visual C++ aus ? Läuft dieses auch auf den obengenannten OS's?

    Und kann man Normales (Nicht Visual) C++ in Visual Studio programmieren ?
    (Da ich .NET eher vermeiden will)

    Danke schonmal.

    Mfg



  • Meine Frage ist nun, läuft ein C++ Programm auf allen Betriebssystem?(Windows/Linux/Mac OS)

    Wenn du es unter Windows kompilierst, wird es nicht unter Mac OSX / Linux laufen. Gilt in jede erdenkliche Richtung. Du musst das Programm für jedes OS neu kompilieren.

    Und wie sieht es mit Visual C++ aus ? Läuft dieses auch auf den obengenannten OS's?

    Quizfrage: wird Microsoft Visual Studio C++ auf einem anderen OS außer Windows laufen? Mir wäre es jedenfalls nicht bekannt.

    Und kann man Normales (Nicht Visual) C++ in Visual Studio programmieren ?

    Zwar ist mir der Begriff "Nicht Visual C++" neu, aber du kannst mit VC++ auch "nicht Visual C++" programmieren. Was du meinst wird wohl eher CLI sein - darauf kannst du in VC++ programmieren.

    Dein Beitrag ließt sich aber so, wie wenn du mit Java besser aufgehoben wärst...



  • Muss der Quelltext dann beim erneuten kompelieren angepasst werden ? Oder Lässt man den Compiler sozusagen für jedes OS einmal "drüberlaufen"?

    Und wieso sagen so viele das es am besten sei unter Linux zu komplieren ?



  • DevBeat schrieb:

    Muss der Quelltext dann beim erneuten kompelieren angepasst werden ? Oder Lässt man den Compiler sozusagen für jedes OS einmal "drüberlaufen"?

    Wen du nichts plattformspezifisches(winapi) laufen lässt, sollte es unabhängig sein. C++ ist ISO-Standarisiert, also muss jeder kompatible Compiller auch mindestens "einfachen" Code compilieren können.

    0x0ERROR



  • Sorry hab den obigen Beitrag wohl zu spät mit einer weiteren Frage versehen.

    ->> Und wieso sagen so viele das es am besten sei unter Linux zu komplieren ?



  • DevBeat schrieb:

    ->> Und wieso sagen so viele das es am besten sei unter Linux zu komplieren ?

    Solltest du das nicht die "vielen" fragen?



  • manni66 schrieb:

    Solltest du das nicht die "vielen" fragen?

    Dachte das dies möglicherweise Vorteile bietet und unter umständen auch hier welche sind, die es behaupten.



  • Wenn du nur einmal kompilieren möchtest, dann solltest du Java verwenden.
    Da wir der vorkompilierte Code erst auf dem Computer des Benutzers vom Java Interpreter in den Maschinencode entsprechend des OS umgewandelt.
    Allerdings ist bei Java leider die Performance leicht schlechter, da wie gesagt der Code erst zur Laufzeit interpretiert wird.



  • ich wüste nicht wie so das programmierne auf linux besser seinen sollte 😮
    Ich denke es ist er glecihwertig, ich weiß nur das du bei linux teilweise andere methoden aufrufen kannst, aber die heißen bei lunix nur anders



  • Linux ist halt ein Hacker-OS. Du bekommst die meisten Programmierwerkzeuge und Bibliotheken mit einem Klick/einer Zeile in der Shell auf den Rechner und sie werden automatisch aktuell gehalten. Das ist viel frickliger unter Windows. Hängt eben damit zusammen dass der Grundgedanke war dass alle Software für Linux OpenSource ist und man sich den Krempel selbst kompiliert, da wäre es umständlich das für alle Abhängigkeiten selbst machen zu müssen.

    Ich würde mich von Visual C++ fernhalten wenn du plattformunabhängigen Code schreiben möchtest, kannst dir als Anfänger ja mal CodeBlocks ansehen. Je nach Anwendungsfall gibt es viele portablke Bibliotheken, was möchtest du denn machen?



  • Ethon schrieb:

    Ich würde mich von Visual C++ fernhalten wenn du plattformunabhängigen Code schreiben möchtest?

    Mein Bullshit Detektor ist grade explodiert.

    VC++ hat den besten Compiler und Debugger für Windows Systeme.
    Und die Unterschiede in der STL Implementation sind marginal.



  • Besonders gut an VC++ ist auch der Variadic-Template-Support und dass sie auch sonst so schnell alle neuen C++-Features einbauen. Wenn ich da an gcc oder clang denke, bekomme ich das Grausen!



  • Also ich bin da hin- und hergerissen bzgl MinGW64 und VC++ unter Windows. Bei jedem Ansatz gibt es etwas zu meckern.

    Debuggen ist per MinGW64 etwas anspruchsvoller, zumindest wenn man direkt mit dem GDB arbeitet. Geheimtipp: Wenn einem eine Assertion um die Ohren fliegt vor dem Start under GDB folgendes eintippen:

    (gdb) break _assert
    

    denn dann kann man den Aufrufstack noch nachvollziehen. Unter Linux muss man das nicht machen. Da hält er schon automatisch bei einer Assertion Failure an. Es gibt auch noch keine ansatzweise funktionierende std::thread/async/etc Unterstützung unter Windows sondern muss dann auf so Dinge wie Boost.Threads zurückgreifen. Die per MinGW64 erzeugten Binaries sind auch irgendwie riesengroß. Gut, die hängen dann wenigstens nicht von irgendwelchen VCRT90.DLL-Dateien ab.

    Das, was mich an VC++ stört, ist die relativ schlechte Unterstützung der C++11 Features. Es kommt öfters vor, dass ich Workarounds finden muss, weil der Compiler bzgl des einen oder anderen C++11-Features buggy ist. Die variadischen Templates sind auch relativ spät dazugekommen (in einem Update von VC++ 2012, wenn ich das richtig in Erinnerung habe). Ich habe aber nicht wirklich Lust von VC++ 2010 auf VC++ 2012 umzusteigen. Als ich mal die Testversion von 2012 installierte, dauerte das fast eine Stunde (!), das User Interface sah richtig schei**e aus und die Reaktionszeit des Programms war nicht besonders hoch.

    Pick your poison.



  • Ethon schrieb:

    Linux ist halt ein Hacker-OS. Du bekommst die meisten Programmierwerkzeuge und Bibliotheken mit einem Klick/einer Zeile in der Shell auf den Rechner und sie werden automatisch aktuell gehalten. Das ist viel frickliger unter Windows. Hängt eben damit zusammen dass der Grundgedanke war dass alle Software für Linux OpenSource ist und man sich den Krempel selbst kompiliert, da wäre es umständlich das für alle Abhängigkeiten selbst machen zu müssen.

    Ich würde mich von Visual C++ fernhalten wenn du plattformunabhängigen Code schreiben möchtest, kannst dir als Anfänger ja mal CodeBlocks ansehen. Je nach Anwendungsfall gibt es viele portablke Bibliotheken, was möchtest du denn machen?

    Das ist aber sehr negativ ausgedrückt. Ich habe das Gefühl, du magst Linux nicht. Und warum es frickelig ist, wenn die Software mit einem Klick oder einer Zeile installiert wird und automatisch aktuell gehalten wird, erschießt sich aus Deinem Kommentar nicht so wirklich.

    Die Wurzeln von Linux sind aber Unix. Und Unix ist kein Hacker-OS, sondern ein professionelles Betriebssystem von Technikern für Techniker. Unix ist auch im Serverbereich weit verbreitet. Und Linux bringt die Eigenschaften von Unix in die Open-Source Welt. Es sollte erwähnt sein, dass das nicht nur Linux macht, sondern auch die BSD-Varianten.

    So, und jetzt wird es weniger Objektiv. Ich programmiere halt gerne unter Linux und Unix, da mir dort viele leistungsfähige Tools zur Verfügung stehen. Unter Linux ist man im Vergleich zu Windows beim Programmieren viel näher am Eisen. Man fängt unter Linux an, indem man in einen Editor Quellcode eingibt und dann im Terminal den Compiler laufen lässt. Eventuell schreibt man sich dann ein Makefile. So lernt man gleich, was da eigentlich passiert.

    Unter Windows verwendet man eher eine große IDE, wie VC++, die vieles abstrahiert. Dann kommt es schon mal vor, dass man beispielsweise viel später erst den Unterschied zwischen Compiler und Linker versteht.

    Ich entwickele auch heute noch (ich mache C++ seit etwa 20 Jahren) am liebsten mit einem Editor und Makefiles. Das mag archaisch klingen und das ist es wohl auch. Aber mir macht es halt Spaß.



  • krümelkacker schrieb:

    Das, was mich an VC++ stört, ist die relativ schlechte Unterstützung der C++11 Features. Es kommt öfters vor, dass ich Workarounds finden muss, weil der Compiler bzgl des einen oder anderen C++11-Features buggy ist. Die variadischen Templates sind auch relativ spät dazugekommen (in einem Update von VC++ 2012, wenn ich das richtig in Erinnerung habe).

    Im Prinzip sind sie noch gar nicht da, sondern nur in Form eines Beta-Previews, war natürlich nicht für den produktiven Einsatz taugt. Die STL ist natürlich auch noch nicht angepasst.



  • @tntnet du hast den Post falsch verstandne. Da steht, dass _Windows_ viel frickeliger ist.



  • Ethon schrieb:

    Ich würde mich von Visual C++ fernhalten wenn du plattformunabhängigen Code schreiben möchtest, kannst dir als Anfänger ja mal CodeBlocks ansehen. Je nach Anwendungsfall gibt es viele portablke Bibliotheken, was möchtest du denn machen?

    Ja ich möchte plattformunabhängig programmieren. Ich möchte mal (wenn es so weit ist) so Minispiele programmieren (Snake,Tetris,...).

    Mich würde mal interessieren was so richtige IT Firmen für C++ Spiele für Editroren verwenden (plattformunabhängig) Kann man das pauschal sagen
    ? Oder ein paar aufzählen?.



  • Für Snake, Tetris und so Kleinkram: Java

    Richtige IT-Firmen machen keine Spiele 😃



  • DevBeat schrieb:

    Ethon schrieb:

    Ich würde mich von Visual C++ fernhalten wenn du plattformunabhängigen Code schreiben möchtest, kannst dir als Anfänger ja mal CodeBlocks ansehen. Je nach Anwendungsfall gibt es viele portablke Bibliotheken, was möchtest du denn machen?

    Ja ich möchte plattformunabhängig programmieren. Ich möchte mal (wenn es so weit ist) so Minispiele programmieren (Snake,Tetris,...).

    Mich würde mal interessieren was so richtige IT Firmen für C++ Spiele für Editroren verwenden (plattformunabhängig) Kann man das pauschal sagen
    ? Oder ein paar aufzählen?.

    Wie ich oben schrieb: Das ist absoluter Bullshit was Ethon da schreibt. Es gibt einige wenige Unterschiede in der STL, aber die kann man nachsehen und wenn man sich dran hält kann man die vermeiden, da alle Standardimplementationen funktionieren.

    Als Beispiel gibt erase() bei MS einen iterator auf das neue nächste Element zurück, das macht die STL Implementation von MinGW/GCC nicht. Aber wenn man sowas weiss, kann man das einfach nicht benutzen. Denn das was der Standard vorschreibt, geht immer.

    Platformunabhängige Spiele erzeugst du am besten mit Engines wie Ogre3D, Irrlicht oder Unity3D (C#) und anderen. Und wenn man die benutzt isses wayne ob man nun MSVC oder MinGW nimmt, da man eh eine High Level API verwendet.

    Aber wenns ums Debuggen geht und damit verbringt man viel Zeit, ist der MSVC die beste IDE. Da beisst die Maus kein Faden ab.



  • Scorcher24 schrieb:

    Das ist absoluter Bullshit was DevBeat da schreibt.

    Du meinst Ethon, oder?


Anmelden zum Antworten