c++ kernel tutorial



  • Es gibt prinzipiell nix, was man in C machen könnte, was man nicht auch in C++ machen könnte. C war eben zuerst da und ist in erster Näherung eine Untermenge von C++. C++ hat gegenüber purem C viele Vorteile. Es gibt imo keinen rationalen Grund, heutzutage noch C zu benutzen, wenn C++ ebenfalls eine Option wäre...



  • MrBig schrieb:

    oder ob man bestimmte Dinge beachten muss...

    Grundsätzlich solltest du C++ schon halbwegs drauf haben. Ein OSDev Tutorial kann dir nicht nebenbei noch eine Sprache beibringen. OSDev eignet sich auch wirklich nicht besonders zum lernen einer Sprache. Insofern sollten dir die eventuellen Unterschiede schon bewusst sein. (z.B. dass der Compiler dich früher oder später nach einer Funktion fragen wird die pure virtual calls handelt. Wenn du jetzt nicht weist was das ist: Erst C++ lernen, dann eigenes OS schreiben. ;))


  • Mod

    Du solltest das Thema C/C++ im Bereich OSDev mit den Entwicklern von pedigree oder mit Linux-Entwicklern diskutieren. Ich persönlich habe C++ im Kernel wenig vermisst.



  • ich kann c++ zum größten teil (alles kann so gut wie keiner).
    Mir geht es auch nicht darum die sprache zu lernen sondern wie man sie anwenden kann (in diesem fall Betriebssystem), weil ich auch was neues lernen will und nicht dieses ständige Programme schreiben. Nein, ich möchte mal was anderes, komplizierteres, wo aber jede Veränderung zum "normalen" Programme programmieren erklärt wird -> neues lernen.
    Mein Problem ist nur, es gibt (also ich habe keine gefunden) keine guten erklärungen.



  • Weil es nicht relevant ist. Wenn du C++ kannst, sollten dir die Unterschiede zu C sofort klar sein. Und an die "Tutorial"-Grenze stößt man bei OSDev eh sofort, danach gibt's nur noch Refs. Beschwerst du dich dann auch dass da zu wenig C++ drin ist? 😃



  • Wie oft noch...?!
    Mir geht es nicht um die Unterschiede zwischen den Sprachen an sich sondern um den Unterschied in der Anwendung. Ich glaube wir reden bzw schreiben aneinander vorbei. Du meinst anscheinend was anderes als ich.



  • Und was genau verstehst du unter solchen "Unterschieden in der Anwendung"?



  • Es gibt keinen Unterschied in der Anwendung. Darum kann man ihn auch nicht erklären. C im Kernel verhält sich zu C++ im Kernel wie C in Anwendungsprogrammen zu C++ in Anwendungsprogrammen, unter den Einschränkungen, die hier längst genannt wurden (Exceptions, RTTI, ... gehen nicht out-of-the-box).

    Also nimm den C-Code, den Du findest, und bau daraus Klassen, wenn Du willst/wo es Sinn macht. C ist (wie auch schon geschrieben wurde), mehr oder weniger eine Untermenge von C++ (auch wieder mit ein paar Einschränkungen, vor allem im Fall von C99), sodass der meiste C code auch einfach läuft, wenn Du ihn als C++ kompilierst.

    Einzige Sache (die aber im Grunde auch nicht spezifisch fürs Schreiben von Kerneln ist), die man beachten muss: Wo Funktionen von Außen, also z.B. von Assembler-Code aufgerufen werden, ist es ratsam, diese Funktionen als extern "C" zu deklarieren, sonst muss man sich mit dem name-mangling des verwendeten Compilers auseinandersetzen.



  • Mit Anwendung meine ich zB wo es sinnvoll ist c++ zu verwenden (das will ich ja hauptsächlich) und wo man c verwenden sollte weil c++ dafür zu kompliziert oder ungeeignet ist. Ich möchte halt einfach anfangen und dann besser werden



  • Es ist überall angebracht C++ zu verwenden. So, jetzt bist du gut informiert.



  • ich glaube du hast meine frage nicht richtig verstanden.
    Egal, sonst werden hier noch mehr Posts ohne Inhalt erstellt.
    (wenn nicht von euch, dann von mir 😉 )
    Aber danke für die Links.



  • Was genau ist an "Es gibt nix, was man in C machen kann, das man nicht auch in C++ machen könnte" unklar?



  • Hier ist ein ziemlich realistischer Abriss warum Dinge nunmal so sind wie sie sind.
    http://www.yosefk.com/blog/oo-c-is-passable.html

    Da gibts für mich nicht viel hinzuzufügen,
    nur wer mal wirklich mit Flaschenhälsen kämpfen musste
    zb
    beim upload auf exotische Chips über exotische oder minimale Schnittstellen,
    beim kompilieren von mehr als 1 Target 1 Plattform 1 Konfiguration..

    Wird wirklich verstehen warum man manchmal mit mehr kämpfen muss
    als mit der Frage
    "Kann ich den OOP-Knüppel auch noch in die letzte Nische prüggeln in die sie nicht hingehört ?"



  • Die einzige Kritik an C++ im ganzen Artikel war "Compile-Time", und da muss ich ihm auch zustimmen, insbesondere g++ auf Windows ist einfach schrecklich. Aber: Was er da beschreibt (350MB RAM für ein File?) konnte ich noch nie beobachten. Ich hatte noch nie das Gefühl, dass man damit nicht mehr arbeiten könnte. Ansonsten würden mir doch wesentlich mehr Features an C++ fehlen, virtual halte ich gegenüber Templates und RAII schon fast für irrelevant.



  • g++ auf Windows ist einfach schrecklich

    Es gibt keinen Zwang, g++ zu verwenden. Kannst ja auch Clang nehmen (oder mit erhöhtem Schwierigkeitsgrad MSVC).


Anmelden zum Antworten