Hallo und willkommen zurück.
In diesem Vortrag möchte ich um darüber zu sprechen,
was zum Erstellen eines c-Programms gehört.
Es gibt also vier grundlegende Aufgaben bei der Erstellung eines beliebigen c-Programms.
Und was diese Aufgaben sind Bearbeiten, Kompilieren, Verknüpfen und
Ausführen umfassen.
Wir haben über die verschiedenen Schritte gesprochen dass Sie beschäftigen, wenn
Sie ein c-Programm in Bezug auf Ihre Arbeit schreiben Um die Anforderungen zu verstehen, entwerfen
Sie Ihren Code Wenn Sie Ihren Code schreiben, werden Sie ihn
testen und debuggen und so weiter und dann pflegen.
Worüber ich hier spreche, ist was Sie müssen dies tatsächlich tun, wenn Sie mit
dem Schreiben eines Programms beginnen. Wir haben uns irgendwie unterhalten Das Bearbeiten, Kompilieren, aber
Verknüpfen und Ausführen ist ebenfalls wichtig.
Und worüber ich sprechen möchte Hier sind die Details dazu.
Also werden diese Aufgaben werden zweite Natur für Sie, weil Sie
es tun werden jedes Mal, wenn Sie ein c-Programm schreiben.
Du wirst deine bearbeiten Quellcode, Sie
werden kompilieren, Sie werden verknüpfen, und dann wirst du rennen.
Du wirst es tun das sehr, sehr oft.
Also die Prozesse der Bearbeitung, Kompilieren, Verknüpfen und Ausführen sind
für die Entwicklung gleich Programme in jeder Umgebung mit
jeder kompilierten Sprache.
Dies gilt nicht nur für c.
Wenn Sie Java schreiben - ein Java Programm, Sie werden den Quellcode
schreiben, Sie werden gehen um den Quellcode zu kompilieren.
Verknüpfen - Sie sind sich möglicherweise nicht so bewusst von in Java, aber es wird eine
Art Verknüpfung machen und wir werden reden darüber, was Verknüpfung ist, und dann
werden Sie das Programm ausführen.
Du wirst das alles tun.
Was ich hier beschreibe wieder ist, wie es in c gemacht wird.
Das Bearbeiten ist also genau das, was Sie würden denken, dass es ist.
Es ist der Prozess des Schaffens und Ändern
des tatsächlichen Codes, des c-Quellcodes.
Der c-Quellcode geht in einer Datei sein.
Und es wird alles enthalten die Aussagen und alle
Anweisungen, die Sie schreiben.
Alle c-Quellcodedateien enden mit dem . c Erweiterung, und so können
Sie identifizieren dass es eine Quellcodedatei ist.
Davor . c Erweiterung geht Um als Basisname
bezeichnet zu werden, möchten Sie, dass Ihre Dateinamen aussagekräftig sind.
Wenn Sie ein c-Programm schreiben, das zwei hinzufügt Zahlen können Sie eine Datei
namens add haben. c, das einen Quellcode enthält.
Und denken Sie daran, dass die meisten c Programme werden viele, viele
verschiedene Dateien haben.
Ihre Dateien sollten also gute Namen haben.
Aber die Art und Weise, wie Sie identifizieren können c Quellcode ist der. c Erweiterung.
Sie alle enthalten die. c Erweiterung.
Jetzt, wenn wir unseren Code für bearbeiten In dieser Klasse werden wir
eine integrierte Entwicklungsumgebung verwenden.
Wir gehen nicht einfach einen einfachen Editor verwenden.
Ein Beispiel für einen einfachen Editor wäre so etwas wie ein Wordpad.
Wir werden etwas benutzen Das hat einen Editor, aber auch
viele andere Dinge, die Ihnen helfen Schreiben Sie Ihren Code effizienter.
Die IDE - und dies wird als IDE bezeichnet, integrierte Entwicklungsumgebung.
Die, die wir verwenden werden für diese Klasse
ist Codeblöcke, ich werde im Detail behandeln, Wir werden jedoch
Codeblöcke für die Bearbeitungsaufgabe verwenden.
Aber Sie können verwenden, was Sie wollen.
Wenn Sie Notepad verwenden möchten, wenn Sie
Willst du etwas noch winzigeres verwenden, kannst du Atom, da ist IDEs für visuelle
Studios, aber die, die wir hier behandeln werden, ist wie um Ihren Code und Codeblöcke zu bearbeiten.
Und das ist eine schöne Idee und die Grund, warum ich es gewählt habe, werden
wir über mehr Details sprechen, aber es ist plattformübergreifend und einfach zu bedienen.
Das Bearbeiten ist also die Grundvoraussetzung Prozess, Schreiben des Codes.
Kompilieren.
Wir wissen, was ein Compiler macht.
Es braucht nur dieses hohe Niveau Sprachcode und und konvertiert es
in Maschinensprache, und es auch erkennt und findet Fehler in Ihrem Code.
Nachdem Sie Ihren Code bearbeitet haben, sind Sie Ich werde den Compiler ausführen.
Die Eingabe in den Compiler ist also wird all
dein Quellcode sein, all dein. c Dateien alles, was Sie bearbeiten.
Und wieder kann ein c-Programm habe viele Quelldateien.
Aber die Eingaben in den Compiler sind Diese Quelldateien
konvertieren selbst diesen Code ist ein zweistufiger Prozess.
Die erste Stufe heißt die Vorverarbeitungsphase.
Währenddessen kann Ihr Code geändert oder hinzugefügt werden.
Und die zweite Stufe ist die Bei der eigentlichen Kompilierung wird
der Assembler-Code generiert.
Und darüber werden wir noch mehr sprechen Detail, diese Vorverarbeitungsphase.
Aber du musst es nur wissen Jetzt, wo es zwei Phasen gibt,
in denen Sie kompilieren.
Die, auf die wir uns konzentrieren werden oder derjenige, der leicht zu verstehen
ist, ist die Erzeugung des Objektcodes.
Also wird der Compiler gehen Schauen Sie sich jede
Aussage an und es wird sichergestellt, dass die Die Syntax ist korrekt und die
Semantik der Sprache ist erfüllt.
Die Syntax soll sicherstellen, dass die Struktur des Codes ist richtig, dass
Sie Semikolons an der haben Ende der
Aussage, dass Sie Datentypen verwenden, dass Sie - Sie sind Befolgen Sie die Regeln der Sprache.
Semantik ist die Bedeutung der Wörter.
Also, wenn Sie ein Wenn verwenden Schlüsselwort, das ist eine Bedingung.
Semantik passiert in der Kompilierungsphase durch Erstellen einer
Symboltabelle usw.
Aber der Compiler ist wichtig.
Es wird erzeugen dieser Objektcode.
Es wird dir sagen, ob du Fehler in Ihrer Syntax haben.
Es kann auch manchmal erkennen ob Sie toten Code haben oder nicht,
wenn im Grunde kein Code verwendet wird.
Es werden keine logischen Fehler gefunden.
Es werden nur Syntaxfehler gefunden.
Auch hier ist die Syntax die Regeln und Sprache.
Logikfehler sind die Bedeutung.
Als ob du einen Fehler gemacht hättest In der Logik können Sie einen
Fehler in der Funktionalität machen.
Damit Ihr Code ausgeführt werden kann, kann er kompiliert werden. Es funktioniert jedoch möglicherweise nicht wie beabsichtigt, und dies
wird als logischer Fehler bezeichnet.
Der Compiler wird es nicht sagen Sie, wenn Sie einen logischen Fehler haben.
Wenn Sie den Benutzer nach einem fragen wollten Nummer anstelle einer Zeichenkette oder Sie fragen den Benutzer nach
der letzten Name vor ihrem Vornamen, der ein
logischer Fehler ist. Compiler geht nicht um Ihnen diese Art von Fehlern zu sagen.
Typische Fehler, die von der Compiler werden
Dinge wie nicht deklarierte Variablen, Ausdruck sein das
entspricht nicht der Syntax, Sie haben nicht das Recht Klammern, Sie kennen
Blöcke, die keine Endblöcke haben.
Du wirst sehr werden, sehr vertraut mit den Compilerfehlern
und was sie bedeuten.
Hoffentlich, nachdem Sie gelernt haben die c-Sprache und Sie führen den Compiler aus, werden
Sie sehen ein Fehler und Sie werden in
der Lage sein, ihn sofort zu beheben.
Sagen wir whoops haben eine Syntax vergessen oder whoops hat ein
Semikolon vergessen, oh, ich habe vergessen, ein Recht zu geben Klammer, um diesen Codeblock zu beenden.
Es wird zur zweiten Natur werden.
Also, nachdem Sie alle behoben haben Fehler und
Ihre Kompilierung ist erfolgreich, es wird In Assemblersprache übersetzen und
diesen Objektcode generieren.
Also das eigentliche Objekt Code ist ein. o Datei.
Es ist die eigentliche Zusammenfassung Sprachcode, der ausgeführt wird.
Es hat eine Erweiterung. obj oder. Ö. obj typischerweise unter Windows wird die Erweiterung sein. o auf einem Linux oder Macintosh System wird die Erweiterung sein.
Du wirst diese Datei sehen generiert, nachdem Sie Ihren Code kompiliert haben.
Und das ist nur die Endphase
der Zusammenstellung ist das die eigentliche Assemblersprache.
Es wird binär sein, oder? sieht nicht nach Text aus, den
Sie nicht sehen können.
Es wird nur eine haben . o Erweiterung, und das generiert
der Compiler.
Die Art und Weise, wie Sie den Compiler ausführen In c verwenden Sie tatsächlich einen Befehl.
Sie müssen dies wahrscheinlich
nicht tun viel, weil die ide, der editor in der integrierten entwicklung ist Ich werde es für Sie tun, indem
Sie einfach auf eine Menüoption klicken, aber es ist wichtig zu wissen, was los ist.
Also, wenn Sie den Compiler ausgeben Befehl
verwendet normalerweise einen GNU-Compiler, bei dem es sich um einen gcc-Befehl handelt.
Aber im Grunde rennst du einfach ein Compiler-Programm entweder cc oder gcc.
Sie führen das Programm aus und dann geben Sie die Eingabe an.
Denken Sie daran, der Compiler nimmt als Eingabe der Quelldateien.
Sie geben die Eingabe mit a an -c Flag
und dann nacheinander die Quelldateien angeben.
Beispiele hier sind also cc-cmyprog. c oder Wenn Sie den GNU-Compiler verwenden, der ein
beliebter gcc-c ist.
Und wenn Sie die c-Flagge weglassen, wird Ihre Das Programm wird ebenfalls automatisch
verknüpft. Dies ist der nächste Schritt.
Aber das ist wirklich einfach Compiler, wenn Sie sich an der
Befehlszeilenschnittstelle befinden.
Es ist noch einfacher, wenn Sie nur Verwenden Sie eine Menüoption, die wir wahrscheinlich in
dieser Klasse ausführen werden.
Aber es dauert wieder Eingabe, die c Quelldateien.
In Codeblöcken, wie ich bereits erwähnte,
Sie werden einfach auf eine Menüoption klicken und es wird Kompilieren Sie
automatisch einen Link und klicken Sie auf ein anderes Menü Option wird es automatisch ausgeführt.
Aber nochmal, was ist los unter Die Haube ist, dass Sie tatsächlich
den Compiler-Befehl mit dem -c ausgeben Flag und die Eingabequelldateien.
Nachdem Sie kompiliert haben, verlinken Sie. Wie gesagt, jede Programmiersprache hat eine Verknüpfung, aber
viel Manchmal ist es transparent, Sie werden nicht einmal
wissen, was passiert.
In c ist der Verknüpfungsprozess wichtig weil es nicht immer transparent ist.
Aber mit den meisten
modernen IDEs heute, es ist, aber ich muss betonen, dass es in c wichtig ist.
Also nachdem das Programm hat wurde in diese übersetzt. alter Code sein Objektcode, es dann ist
bereit, verknüpft zu werden.
Der Grund, warum wir verlinken, ist, wenn wir
es sind Mit externen Bibliotheken müssen wir alle anderen Bibliotheken greifen und setzen Sie sie in ein Programm.
Das Verknüpfen bekommt also einfach alles die vorhandenen Abhängigkeiten und
das Erstellen einer tatsächlich ausführbaren Datei.
Also die. o Datei ist die Objekte.
Sie verknüpfen dann alle . OS in eine ausführbare Datei.
Und wieder ist dies
normalerweise transparent, geschieht normalerweise automatisch beim Kompilieren.
Aber auch hier kann es nicht und Möglicherweise müssen Sie einen separaten Befehl
ausführen, z. B. -l oder so.
Aber es braucht all diese Objekte Dateien und erstellt eine ausführbare Datei.
Und die ausführbare Datei ist das, was Sie ausführen.
Also wird es all diese kombinieren.
Und dann wird es auch kombiniert.
Und Sie können haben. os das sind zusätzliche Bibliotheken, die andere Programme, die Sie möglicherweise verwenden
möchten jemand anderes hat geschrieben oder
andere Bibliotheken, die mit der Sprache c geliefert werden.
Du wirst alles nehmen diese und setzen sie zusammen.
Und die Verknüpfungsphase wird Erkennen und melden Sie auch Fehler.
Das sind zwei getrennte Phasen.
Das Verknüpfen wäre normalerweise wieder so Neudefinitionsfehler oder Sie versuchen, eine Funktion
aufzurufen, die nicht vorhanden ist.
Also, wenn Sie das nicht haben. o Datei an Wenn Sie das gesamte Programm zusammenstellen,
tritt ein Verknüpfungsfehler auf.
Und du musst alles haben. o's.
Und wieder die. o's kann nicht einmal dein sein.
Sie können mit der gleichen Sprache kommen, Sie können Teil der Standardbibliothek sein oder mit einer
anderen geliefert werden Programm, das jemand anderes geschrieben hat.
Aber du brauchst all diese. o's eine ausführbare Datei bilden.
Also Programmbibliotheken unterstützen und Erweitern Sie die C-Sprache, indem Sie Routinen zur Ausführung von Operationen bereitstellen
das ist nicht Teil der Sprache.
Eingabe- und Ausgabebibliotheken sind Beispiel:
mathematische Bibliothek, String-Manipulationsbibliotheken.
Dies ist genau das Gleiche, wenn Sie sind Mit dem Java-Programm vertraut,
ist es dasselbe wie die Java-API.
Es ist das gleiche wie bei Paketen.
Es ist dieses Konzept,
das ich möchte Daten in eine Datei schreiben Ich möchte
sie nicht selbst implementieren Verwenden Sie eine vorhandene Bibliothek, die mit der Sprache geliefert wird.
Es ist immer noch in c geschrieben, es ist nur jemand c kommt damit.
Es gibt also
alle möglichen Arten von verschiedene Bibliotheken, die wir kennenlernen und verwenden werden.
Dies geschieht Teil von die Verknüpfungsphase.
Also ein Fehler während der Verbindungsphase
bedeutet, dass Sie erneut zurückgehen und Ihren
Quellcode bearbeiten müssen, um ihn zu erstellen sicher, dass Sie diese Objektdatei
finden können, so dass viele der Fehler in der Regel Das bedeutet, dass Sie nur eine Datei oder ähnliches einfügen müssen. Dies wird auch zur zweiten Natur werden.
Erfolg, wenn Sie fertig sind Wenn Sie erfolgreich kompiliert haben, ist die
Verknüpfung erfolgreich abgeschlossen erzeugt eine ausführbare Datei.
In einer Windows-Umgebung Die ausführbare
Datei hat eine. Exe-Erweiterung.
Unter Linux und Windows wird dies der Fall sein habe nur standardmäßig a. aus.
Sie können den Namen von a ändern. aus zu etwas
Bedeutenderem, indem man einfach etwas mitgibt mit dem Compiler-Befehl.
Aber die meisten IDEs auch
in Codeblöcken wird ein Kompilierungs- und Verknüpfungsprogramm in einer einzigen
Operation haben und es wird Erstellen Sie die ausführbare Datei, und doppelklicken Sie dann einfach auf die ausführbare Datei oder
Sie können die ausführbare Datei über einen Befehl oder über die Menüoption ausführen.
Aber nein auf dem niedrigen Niveau, wenn Sie sind Unter Linux
sehen Sie ein a. standardmäßig als ausführbare Datei aus. Unter Windows sehen Sie eine. exe.
Ein Programm von beliebiger Größe wird aus mehreren Quellcodedateien bestehen, die
ich bereits erwähnt habe.
Jede Quellcodedatei benötigt die Compiler zum Generieren der
Objektdatei, die verknüpft werden muss.
Das Programm ist viel einfacher zu Verwalten Sie dies, indem Sie
es in mehrere kleinere Quelldateien aufteilen.
Sie werden viele Quellen verwenden wollen Dateien, und Sie möchten keine
Quelldatei, die 5000 Codezeilen enthält.
Das ist nicht zusammenhängend.
Das ist nicht einfach zu handhaben.
Sie werden also Dateien erstellen die
Quellcode enthalten, und der Quellcode wird spezifisch sein.
Es wird eine haben spezifische Funktionalität.
Es macht es viel einfacher entwickeln
und viel einfacher zu debuggen und ist viel zusammenhängender.
Also wirst du haben viele kleinere Quelldateien.
Sie möchten keine großen Quelldateien mit Tausenden von Codezeilen.
Und all diese Quelldateien sind Ich werde das gesamte Programm zusammenstellen.
Sie werden alle ihre haben besitzen . o's, und sie werden
alle in den Compiler eingegeben.
All diese Konzepte, die machen im Rahmen
des Programms werden im Wesentlichen auch als Projekt betrachtet.
Sie können es sich vorstellen als das auf einer höheren Ebene.
Es ist dein Projekt, es ist dein Programm.
Nachdem Sie endlich alles getan haben dies und du hast es verlinkt, du hast
deine ausführbare Datei, Sie können das Programm dann ausführen.
In den meisten IDEs ist dies gerecht wird ein Menüklick
sein oder Sie können in Windows doppelklicken, Sie können auf die Exe doppelklicken.
Und wenn Sie unter Linux sind, Sie geben einfach a ein. aus.
Nun, wenn a. raus musst du haben bestimmte Berechtigungen, so dass Sie möglicherweise einen Befehl zum Ändern des Modus ausgeben
müssen, aber um es laufen zu lassen, kann man sagen. /ein. out und das wird das Programm
ausführen von der Kommandozeile Linux.
Aber normalerweise musst du das nicht mach dir darüber Sorgen. In der Ausführungsphase
führen Sie also Ihr Programm aus.
Jede der Anweisungen des Programms wird nacheinander ausgeführt.
Wenn das Programm welche anfordert
Daten vom Benutzer, das Programm wird angehalten und erhält diese Eingabe.
Sie können die Eingabe über die erhalten Tastatur oder es kann die Eingabe über grafische Benutzeroberfläche
erhalten, wenn Sie haben Bibliotheken dafür in Ihrem c-Code.
Ergebnisse, die angezeigt werden durch das Programm
erscheinen in einem Fenster namens Konsole.
Und wir werden es zeigen Sie Beispiele dafür, wenn wir
über Codeblöcke sprechen.
Aber wenn Sie Ihr Programm ausführen, In der Regel wird die Ausgabe angezeigt.
Nicht immer, manchmal werden Programme Dinge tun, die keine Ausgabe erzeugen.
Aber normalerweise produzieren sie Output und
Sie sehen die Ausgabe direkt auf dem Terminal oder der Konsole.
Die Ausführungsphase wird ebenfalls generiert eine Vielzahl von Fehlerbedingungen.
Sie können also das Falsche
produzieren Ausgabe, die nur ein logischer Fehler ist und Sie müssen zurückgehen und bearbeiten Sie Ihren Quellcode.
Es kann dort sitzen und einfach nichts tun weil Sie logische Probleme haben.
Und schließlich kann es
abstürzen Ihr Computer ist das Worst-Case-Szenario, was bedeutet, dass Sie haben etwas wirklich Schlechtes in
Ihrem Programm gemacht und es war so
schlecht dass das Programm gerade gestorben ist oder nur oder tatsächlich
andere verursacht hat Programme auf Ihrem Betriebssystem, um Ihren gesamten Computer zum Absturz zu bringen.
Führen Sie also die eigentliche c-Anwendung aus kann Probleme verursachen. Wenn das Programm das nicht ausführt beabsichtigte Funktionalität, dann müssen Sie zurückgehen und
die Quelle bearbeiten Code
müssen Sie möglicherweise neu organisieren oder neu gestalten, und hier
sind wir sprach über die verschiedenen Schritte.
Dies wird als Debugging bezeichnet Phase, um Ihre Fehler zu finden und zu beheben.
Wir werden ein Ganzes haben Abschnitt
über das Debuggen, weil es so wichtig ist.
Ich habe das schon früher erwähnt Der beste Weg zu lernen ist,
durch deine Fehler zu lernen.
Du wirst ständig zurückkehren und bearbeiten Sie den Quellcode und debuggen Sie.
Der gesamte Kompilierungsprozess, Das Verknüpfen
und Ausführen des Programms wird wiederholt, bis Sie fertig sind, bis
Sie fertig sind Sie haben alle Ergebnisse, die Sie für die Funktionalität dieses Codes benötigen.
Also hier nochmal eine schöne Illustration, die ich gerne zur Verfügung stelle.
Dies ist aus einem Buch entnommen von Horton Beginning C genannt.
Aber das ist der Prozess das wirst du haben.
Sie werden Ihren Quellcode bearbeiten.
Sie werden eine Datei mit einem erstellen . c Erweiterung und ein aussagekräftiger Name.
Sie werden einen Editor verwenden dazu
oder eine IDE, integrierte Entwicklungsumgebung, so etwas wie Codeblöcke.
Sie werden es dann kompilieren.
Der Compiler wird Generieren Sie eine obj-Datei und eine o-Datei.
Wenn diese Datei nicht
generiert wird, Das bedeutet, dass Sie Fehler haben und diese beheben müssen.
Nachdem Sie die obj-Dateien erstellt haben, Die Objektdateien müssen Sie dann alle miteinander
verknüpfen um eine ausführbare Datei zu erstellen.
Und du könntest es auch haben Fehler in dieser
Phase, in der sie nicht richtig verknüpft sind.
Du musst zurück gehen und Bearbeiten Sie Ihren Quellcode.
Sobald Sie tatsächlich keine Fehler haben
Wenn Sie eine ausführbare Datei haben, können Sie Ihr Programm ausführen.
Und wieder, nachdem Sie Ihre laufen Programm, können Sie immer noch Fehler haben, weil
es logische Fehler geben könnte.
Dann würden Sie zurückgehen und bearbeiten Sie Ihren Quellcode.
Das wird also ein sich wiederholender
Prozess, mit dem Sie sehr vertraut sein werden.
Bearbeiten, kompilieren, verknüpfen, ausführen.
Und das ist wieder typisch was Sie in allen Sprachen tun.
Du wirst das noch einmal machen und immer und immer wieder,
bis Ihr Programm alle Ihre Anforderungen erfüllt.