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!
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 :-)
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.
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.
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
"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.
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!
Danke für die Blumen.
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 :-)
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.
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.
Geiler Content, hätte dir gerne ein Kaffee ausgegeben dafür! Mach weiter so.
Genau das gesucht!
Super Erklärt Danke =)
Sehr schön
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
"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.
Ehrenmann
7:16 "void" heißt nicht "nichts", das wäre "nothing". "void" heißt leere.
gähnende, weite Leere
Dislike.