[C++ von { bis }] Präprozessor, Compiler, Linker

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 ธ.ค. 2024

ความคิดเห็น • 17

  • @yurikasajev7008
    @yurikasajev7008 10 ปีที่แล้ว +19

    Endlich mal ein Tutor der fundiertes Fachwissen besitzt und kompetent vermittelt. Findet man selten bei all den C++-Tutorial-Videos auf TH-cam. Nicht nur für Neueinsteiger, gerade auch für Erfahrene zur Wiederholung gut geeignet. Große Klasse!

  • @Banchuba
    @Banchuba 8 ปีที่แล้ว

    Boah, ich seh gerade den Wald vor lauter Bäumen nicht :-) Aber tolles Video. Ich vermute ich werde mir einige wenn nicht gar alle Videos mehrfach ansehen müssen um alles zu verstehen :-)

  • @MrJaleelJamal
    @MrJaleelJamal 5 ปีที่แล้ว

    Ich habe eine Frage zu Minute 11:07. Welche Adressen fügt denn der Linker dem Hauptprogramm zu? Das Programm wird ja noch nicht ausgeführt sondern nur erstellt und liegt dann auf der Festplatte bis ich die .exe ausführe. Also können ja keine Adressen vom RAM beim erstellen der exe schon in den Code geschrieben werden. Sind das Adressen von der Festplatte? Ich dachte der Linker kopiert einfach den Inhalt der Funktion an die Stelle wo sie in der main aufgerufen wird.

    • @bytesnobjects
      @bytesnobjects  5 ปีที่แล้ว

      Er fügt letzten Endes eine Adresse aus dem Adressraum des Programms ein. (Leute mit mehr Ahnung mögen mich im Zweifelsfall korrigieren) Die Idee ist grundlegend so: das Programmabbild (d.g. das Binary, ob nun unter Linux oder Windows als Exe-File) hat eine Basisadresse, von der aus der Programmcode gezählt wird (Bei ganz alten 16-Bit-DOS-COM-Programmen war das bspw. immer Adresse 100H und das Programm wurde halt immer an Adresse 0H eines entspechenden Segments geladen. Der Grund, wieso .com-Files nicht größer als 64 KByte sein können, die Größe eines Segments).
      Wenn das Programm in den Speicher geladen wird, hat das Betriebssystem dann zwei Möglichkeiten: entweder alle Adressen nochmal umschreiben, oder (auf modernen Systemen) via virtual memory einfach den passenden lokalen Adressraum durch die Hardware auf irgendwelche Speicherseiten mappen lassen. Details weiß dann eher Google/Wikipedia. Normalerweise bewege ich mich etwas weiter oben, weg von der Hardware.

  • @pandalanhukuk804
    @pandalanhukuk804 6 ปีที่แล้ว

    Geiler Content, hätte dir gerne ein Kaffee ausgegeben dafür! Mach weiter so.

  • @kronosDE
    @kronosDE 6 ปีที่แล้ว

    Genau das gesucht!

  • @JeanJelly
    @JeanJelly 9 ปีที่แล้ว

    Super Erklärt Danke =)

  • @TedMarcin
    @TedMarcin 6 ปีที่แล้ว

    Sehr schön

  • @reingold987
    @reingold987 7 ปีที่แล้ว

    hoffe das sie hier noch antworten.
    ich benutze Dev-C++ 5.11
    falls ich auf compile (F9) drücke kommt :
    main.cpp :
    In function `main':
    undefined reference to `printHello()'
    [Error] ld returned 1 exit status
    hello.hpp :
    bekomme ich am ende eine datei : hello.hpp.gch
    hello.cpp :
    In function `main':
    undefined reference to `WinMain'
    [Error] ld returned 1 exit status
    ich weiß einfach nicht weiter >.< ich werde erstmal die nächste/n folge/n anschauen und hoffen dass mir jemand hilft

    • @bytesnobjects
      @bytesnobjects  7 ปีที่แล้ว

      "undefined reference to `WinMaiǹ'" spricht für ein Win32-Programm. Da heißt der Einstiegspunkt anders. Da musst du mal schauen, ob du ein Projekt für ein Konsolen-Programm oder sowas anlegen kannst. Da bin ich im Detail allerdings raus. Meine bevorzugte Entwicklungsumgebung ist Linux.

  • @klim4x
    @klim4x 5 ปีที่แล้ว

    Ehrenmann

  • @ruvoker6011
    @ruvoker6011 9 ปีที่แล้ว +2

    7:16 "void" heißt nicht "nichts", das wäre "nothing". "void" heißt leere.