[Playlisten] [Impressum und Datenschutzerklärung]

04B.1 mehrere C-Dateien, Header-Dateien, #include, Include-Guards


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

ummit ihm zu übenwie man mal ein Programm in verschiedene Dateien auf teilsfreundlichkleinen Beispiel anfangendarüber dasfolgendes werden im gesamten heute wird es Folgendes werden es wird eine Dateigebenmit dem Hauptprogrammsoteil wenn siedann wird es eine Datei gebenmir sowas stattfindetdann wie eine Heizung zu RegelheizungPunkt zehnauf Englisch nennenspäter egalund es wird eine Dateigebenin der ?? mit dem Motto Messung stattfindetaber dann von mir ausdas auf Deutsch TemperaturmessungPunkt zähltezurMessung?? nochPunkt sie?? aus drei Dateien bestehen im Hauptprogramm werdenhier die Sachen aus Heizung funktioniert TemperaturmessungPunkt sie benutzt werdenwie die Namen sagen Heizung Punkt sie wird dazu dienen etwas Beratung einzustellen und dem Motto müssen sie wird dazu dienenähnliche Messwerte zu holendass es schon polarisiertesProgrammschreibe nicht alles in meiner Hauptdateisondern habe nochextra Dateien die sich mit Spezialaufgabenbeschäftigennächstes Semester bei der objektorientiertenProgrammierung wird man typischerweise dann Sammlungen von Klassen haben die das jeweils machen in CSSetwas schlichter Mann hat jeweilseine Datei gleich mehrere Dateiengesungen wie Spezialaufgabenkümmernandie man dann auf hoher Ebene verwenden kann wenn sie sacht nur noch grob sowas wie Heizung einschalten und hier in den einzelnen Dateien wird definiert werdenwas das denn in Detailsbedeutet?? fange vorsichtig hiermit der Datei anKomma was selber Bauenaufschreibenoder direkt in den Rechner eintippenich hätte gernein dieser DateiheizungPunkt sie hätte eine Funktion die Heißstelle Heizung ein?? an Stelle Heizung anund eine Funktion die HeizstelleHeizung aus??bauen Sie das mal soweit wir wissen nicht genau was drin stattfindendenFunktion aber von außen herwas müssen Siealles hinschreiben damit es überhaupt funktioniert mit Schweifklammer und Klammern und nahmen Typenwaren sie soweit maldiese DateiheizungPunkt siefürdie Leute am Rechner solltest ?? zeigen eine weitere Datei anzulegenbis er mir nur mein Ziel drin eine weitere Datei wäre mit Zufallam Sinne neue Dateifertig sowas rein der Speicher sie dann unter dem entsprechenden Namen unter muss man sie auch noch hinzufügen das es wirklich Bestandteil des Projekts istaber es ?? dann was rein tippenalsich hätte gerne ganz simpler Funktion die funktionierende den Lichtschalterwenn ich's Stellheizung anehernen Aufrufe sollte ?? zum angehen ohne wenn und aber nicht aus aufrufen sollte ausgehen ohne wenn und aber denke ich nichts in beiden Funktionenund ich will auch gar nichts zurück habendas heißt in dieser Datei hier stünde sowas wie?? gibt nichts zurückanund kriegen nichts Observer und Kriege nicht in der Formdes östlichen Schweifklammer sagen was da passiert wird Schweifklammer immer noch ein Schweifklammer sagen was da passiertdannes aber noch nicht genuguns mit mit allen möglichen Binärgeschichtenbefasstübernächste Wochewüssten sie was man ?? dazwischen schreiben müsstenimmt es einem alsoirgendwas muss er dazwischen passierenumwas auszulösenwas zu steuernirgendwelche einen Ausgänge zu benutzen von dem Chip und genauso gelb sein wie hierdie Funktion die dann auch in anderen was tun wirähmdas ganze Speichern jaCSSnatürlichnicht als Anteil des eins C sondern es sollte heißenPunkt C sosehr das ausder zur weißrussischen Zieldatei sollte auch hier diedie Einfärbungder verschiedenen Bestandteileverschiedene syntaktischen Bestandteile hierdas könnte in dieser Datei stehenaneine Sache muss ich noch mit der Datei veranstaltenwas schon sehenhierbei dem Projekt stets Verbohrtheitjetzt ja V vierähmein geschickter Namebei dem Projekt steht welche Dateien zu dem Projekt gehören derzeit wird nur Zement Punkt sie Datei zu den Projekts nur die wird kombiniert das ist nicht gut deshalb auch jetzt nochein Mausklick rechts auf das Projektgenau da Ads entfaltet Werder soforterteilt zum zehnStellen sind ?? noch klicken wo sie wollenaus dick rechts Hauptsachean diese Datei zum Projekt hinzufügenjetzt weißals Entwicklungssystemdass diese beiden Dateien mähen von zehnund Heizung Punkt sie zum Projekt gehörendoch beide mit kompiliert werdenin ein einziges Programmdasses schon anders als in normalen Textverarbeitungsprogrammekann sie nämlich hier mehrere Dateien selbst erzeugte nicht alles in einer einzigen Dateiindexbearbeitungsprogrammauch machen jedes Kapitel in einer Datei macht und einereinenMeter mit zwei Dateien mein Programm besteht schon aus zwei Dateienund der ganzeKrempel drumherum daher automatisch ohne Entwicklungsumgebungerzeugt wirdgroß dann noch ein bisschen mehr von ?? aber das eigentliche Programm sind jetzt zwei Dateien ?? Punkt sie hat sieals normale Textdateien übrigens wenn sie hier den Editor aufmachenund das gilt für die meistenProgrammiersprachenandie Vorgaben der der Quellcode immer der schreibende Quellcode ist ?? ganz normale Textdateijetzt hat man Programm zwei Dateienplusalles mögliche was automatisch Strom erzeugt worden istderWitz ist ja nundas hier zu verwendenwenn das hier nur in dieser DateiheizungPunkt siedrin steht kann ich nichts damit anfangen ich möcht es in dieser DateimaineC verwendenwie können Sie jetzthier die Heizungsanschaltenin Mainz äh rufen Sie so eine Funktion aufin der Tat wir brauchen eine Header-Datei also was jetzt nicht machen können ist das jetzt direktinder Mainfunktionin der Maildatei soll ich sagen diese Funktion aufrufenPunktdas gibt lustige Effekte können wir sagen Protect Mac um das malzu kompilieren Punktund dann sagte ihnendann sagte ihnen dass er diese Funktionstelle Heizung animplizit deklariert hat will sagen hat sich was erfundenerkennt diese Funktion ?? und hat sich was erfundenan C und C plus plusbrauchen eine Deklarationund jetzt kommt die Headerdateien ins Spiel es hatte auch diese Zeiler schonmit Routingglutund so weiterdas ist schon ganz viele Funktionen für uns deklariertsich auf den speziellen Chip beziehenund jetzt bauen Sie das mal selberbrauche noch eine Header-Dateimit den Deklarationenalso zu der Heizung C auch noch eine Heizung Punkt Hund die bin ich hier einElement Punkt zehndamit der Compiler auch eine Ahnung hat was eine Funktion das sein mageine Punkt tar Datei noch dazuin der Header-Datei stehen Deklarationenund Deklarationheißt jaganz dreistmachende neue Datei aufDeklarationder Füllfunktionich nehmequasi was vor der Schweifklammer steht und machen Semikolon dahinter dass wir eine Deklarationdamit sagen ?? Compilerirgendwo gibst du Funktionsstelle Heizung andie nichts nimmt und nichts gibtDetails anderswodass es in C und C plus plus der echt antike Geschichteauch nichts fürdie Sache mit den Deklarationenist dann in Sprachen wie Java undsie sharpweg vom Tischeigentlich sollte sich jader Compiler das auch selbst zusammenzusuchenaberC und C plus plus waren ebenso früh sozusagen dran ansprachen das man noch kein Compiler hatte der sich das alles mal selbst zusammensuchtgesuchterdeshalb muss man es ihminhandlicher Form und gerechter Form selbst serviert das in der nach ?? Header-Dateialsoneue Dateideklarationendareindie mit der mit dem Semikolon ohne Schweifklammerdas ganze speichernalsnatürlich sinnvollerweiseHeizung Punkt HPunktSchreibung Punktsound das kommt jetzt nicht das ich bei einigen gesehen und dass es auch inüblicher Feder das kommt jetzt nicht zum Projekt dazukompiliert werden die zehn Dateiendie Header Dateien werden nichtsoll sagen nicht ausdrücklichkompiliertsondernähm in der Männerteil werde ich jetzt hier das in Cloud einbauendass auch diese Deklaration einliestdadurch wird die Header-Datei automatischkompiliert die müssen sie nichtin das Projekt mit aufnehmenganz im Gegenteil das sogar falsch wenn sie den Projekt mit aufnimmt bei dieser Header-Datei ist egal die macht nicht aber es gibt andere Dateienwurden bis Unsinn passieren kannkönnte das aussehen?? Header Dateien werden nicht ausdrücklich kompiliertdie Zehedateiruft die Header-Datei auf Ibiza einfach der Inhalt der Header-Datei rein kopiert in die Zieldateiund damit wir die Header-Datei kompiliert aber das ist nicht ausdrücklich eine Anforderung an den Compilerhier sage ich lieber CompilergehaltsC Datei wird kompiliertund die Mens jederzeit mit kompiliertFeierabendund in die Sediment sie Datei siehtdann weiß er dass er Heizung Punkt Haar rein laden muss und dadurch wird ?? H Punkt ?? kompiliertnicht in dem sie wieder auflisten das wäre nicht richtigin ??Klammer auf Malenalso zu derHeizung Punkt sie gibt's eine Heizung Punkt Haarjetztmit denDeklarationensenden sozusagen SemikolonundPunkt sie stand die DefinitionSchweifklammer und was drinwas es noch nichtkönnen was da rein kommt in die Schweifklammer aber vom Prinzip her ??unddie Mens jederzeit inkludiertdie Header-Dateieinin Dutzenden Sintflutsowie das nachher ausder Compiler kompiliert die Zehe Dateienund IC Dateienholen sich bei Bedarf Header Dateiendie Header Dateien werden nicht ausdrücklich kompiliert?? ich kann das noch mal mit dem Include vorführen was das denn eigentlich machtgerade erst bei Robson auchetwas sinnvolles tutAugenMacdamitkeinen Ärger mehrCompiler frisst das schon malauch mal in Einzelschrittenrein erfolgreiche Optimierung aus umÜberraschungen zu vermeidenso erste Programmzeilenerste Programmzeilenund da gehe ich jetzt reinlich geht diese Funktion rein hiermitin tunund binda muss ich's gehört an der Stelle wo meine Funktion definiert Insasse geht aus der einen Datei in die andere Partei reinzur Funktion des ?? noch tatsächlichdas kleine Manko das derzeit noch gar nichts tun und diese in das Programmdurch die richtigen Stellen läuft auf jeden Fall aber derzeit noch nichts tunals ihr Ruf ich jetzt eine Funktion auf den einer anderen Datei definiert istamPlatz Komma Sommer angucken was in das Institut tatsächlich macht netterweise können Sie hier Mausklick rechtsauf das Projekt massig Rechtsabstandskönnen Sie sagen beim CompilerRC C plus plus Compiler können Sie sagenwie Professorer Präprozessorder vor Verarbeiterder vorverlegteristdas was der Compiler zuerst startetdas Programm hin dass sie diese ganze Raute sowiesoArier aus buchstabiertähmund da kann man nämlich jetzt sagen die Prozesse Outputtwo Fileman kann sich dieses ganz aus buchstabiertepassiert entsteht wenn das Institut und die Feinunze weiter aufgelöst wird das aufgestellt wird Komma sich in eine Datei schreiben lassen die Prozessor durch ZufallAugengucken uns das anwas dann passiert ich sage einmal MelkMekka das Programm übersetzen und baueneine ausführbare Datei bauenKomma gucken was da übrig geblieben istdas ist das Verzeichnisin dem Projekt alles eingeschriebenist um das müsste bei Dibergs stehenlässt und mich recht erinnere wirsind die Prozess und so weiter das ist das was der Präprozessorerledigt hat ??erzeugt hat?? amThema Heizung Punkt I dass es wahrscheinlich so spannend genau dassdas hat der Compiler gekriegt von der Heizung Punkt Zederteilertoll dass es genau die Heizung Punkt sie Dateiim ICD Kommentar schon mal wegso lustig Mähne spannenderwas glich der Compiler für diese Maine Punkt Zieldateidas wird jetztendlichich gebe ganz kleinen Datei reineuremUnterkapitelganz viel Unsinnwo kommt der ganze Unsinn herjagenau was wir sehen ist hier diese Sintflut ein ?? vier hundert dreißig Hals ganze Spezialitätenfür diesen Chipdie stammen aus dieser Eurovier hundert dreißig Datei das einfach zusammenkopiertengutheißt einfach wieder teilnehmenund rein kopieren eins zu eins reinkopierendas machte ihrdas ist das erste im Blutsind das ist sehr ländlichund irgendwann irgendwann irgendwannirgendwannkommt dann echtunser eigenes inkludierenPunkt das hatte aus unsererDatei genommenda stand ja aus Heizungshaarheizunghabe Bayerein hundert und so weiterObHeizung habedas kommt aus unserer Dateiwird als nächstes da reinkopiertund dann kommt das was in den See stehtdiesesInclude ist ein ziemlichdummer BefehlFußnote ganz was anderes als Import in Javanebenbeidanndie Sintflut ist ein ganz dummer Befehl der einfach nur die Dateiausliestund hier rein setzt vollautomatischund was dann rauskommtsich der Compiler zum Fraß vorgeworfender Compiler sagt erst mal dafürmit dem Prozessortyp vor Verarbeiterkeine auf Deutsch mit dem PräprozessorsockelCompiler dafür dass diese Befehle wirklich ausgeführt werdenaber was zusammen kopiert wirdund erst dannfrisst der wirklich was rauskommtwir sind was dann rauskommt dass es ganz vielander messianischeHaushaltHaushaltspflichtenerfordern sie außer schlichten und dann zum Schlusskommt das eigentliche Wasser haben die beiden Deklarationenaus unserer eigenen Header-Dateiund unsere echte Funktiondastut sie alles im Hintergrundund das passiert eben sobald sie solche Befehle Doppelkreuz habenSachen die vorab passierendas ist eine total spannende Geschichte Heizung PunktCsehr unkonventionelldannwenn ich das jetzt solasse ohne weitere Änderung was wird dann passierenkorrekt die Funktionen dann zweimal drin sein und der Linker meckert anKomma dass er immer an Project MacError Wall Warning Linkerdannwie die Feind eine Funktion wie die vereinter die Funktion einmal hierin der Mengen Zählerteil wird sie jetzt definiertes genoss er sogar anguckenwird sie jetzt Meinian gucken was der Compilerzum Fraß vorgeworfenbekommtder wird zum Schluss sei jetzt einem Funktionsdefinitiondrin stehen jetzt lediglich Funktionsdefinitionenhier mein C Menzel kompilierthatte auf die Definitionvon Stelle Heizung eine Definition von Heizungsauslassungerzeugt richtig zwei Funktionen an der Stellehierundverheizen Sie erzeugte die natürlich noch mal die beiden FunktionenKomma sagen der OP habenkeine Aktionen im Chemiehalsund sie wieder rausdas nur demenziell kombiniert wirdund Macund die Welt ist wieder in Ordnungkönnte man ja machenalso alle Spezialgeschichtenschreiben winzige Dateien und inkludierendiese Zieldateienkönnte man in der Tat machen macht man aber nichts warum nichtsder Grund ist dass es länglich wirdam?? wieder haben meine Gesetz ja auch mal wiederdieHeizungC war das kannichauch machen noch mal Mac um zu erklären was im Hintergrund passiert warum das sinnvoll ist mehrere Zähler teilzuhabenes ist einerseits strukturierterin Module strukturiert?? aberdas ganze natürlich auch haben das mit den Modulen wenn sie Heizung Punkt sierein ladensich schneller übersetzt das ist der TrickamKuchenwirdgenauwas der Compiler tut ist in nimmt jede von den C Dateien hierund baut schon mal vorab zum bisschen Übersetzungeine sogenannte Objektdateidas istder zweite große Schritt beim Kompilierenjeder Zieldateiin eine Objektdateiübersetzen und hier auf diesem Systemfür den Makoto Lands heißt diese Datei dann absurderweiseeher vier dreiaus welchen Gründen noch immerjede Zillertal wird eine Objektdatei dies dann schon mal so grob übersetzt Komma sogar reingucken ?? bisschen Müll muss wissen Komma noch rein guckenmanchesinddas sicher schon nach Klartext ausseinem Buch habendas Sitzuniversum?? nach Klartext aus irgend was ist das schon übersetzt wordendass es keinwirklich gutes lesbares Programm mehrdannalso jetzt sozusagen ist der erste Schritt der Übersetzung schon gelaufen für jede der Zieldatei ist der erste Schritt Übersetzung gelaufenund dann kommt der Linker immer gerade eben als Fehlermeldung gesehen habender Linkerbindet das Ganze zusammen?? kann er die besonders effizient ist amwenndieses hierin einem Zug übersetzt wird als Datei irgendwo liegtdieses hier wir den Einzug vorsätzlich als Datei irgendwo und dass er später wird auch als Datei irgendwo liegenist der Vorteilwenn sich hierin der DateiheizungC was ändern muss nur die noch mal übersetzt werden aber er muss nicht mein PC noch mal übersetzen und er muss nicht Temperaturmessungsie noch mal übersetzenwenn sie in Maine Punkt sie was änderndann bleiben ihre Bibliotheken so wie sie waren die müssen noch nicht wiederübersetzt werden es werden immer nur die C Latein übersetzt die geändert worden sind oder bei denenjeder zum Beispiel Header geändert worden sind wenn sie diesen Header ändernmuss das System auch so klug sein das es feststellt Punkt ich muss diese Datei die diesen Header benutzt auch normal ändernals reine Effizienzgeschichtebeim Kompilierenstellt sich richtig großes System vorWindows ?? irgendwas in Betriebssystemmusikerntausend an solchen Dateien habendann wollen sie nicht all Tausende Dateien ständig neu kompilierensondern nur diedie verändert worden sind dafür ist das dahat sie alle schon weitgehend kombiniert auf der Plattegezeugte Linkerder diekompilierten Version zusammen bindet relativ schnell das geht relativ schnellMusik zumindest dann nicht mehr übersetzenPunkt das ist der Grund dafür das so zu machendanndie Idee wäre in der Maildateinur noch Funktionsaufrufauf hohem Niveau zu haben dass ich mich nicht um irgendwelcheBits auf irgendwelchen Ports kümmereSachen an oder ausgeschaltetwerden oder wie jetzt die Kommunikationmit einem bestimmten Messgerätstattfindetall das will ich aus dem NC rausnehmenwollenund inschöne Bibliothekenlegenich mich im Zweifelsfall vorher selbst geschrieben habe die meisten Praktikumsaufgabensie gucken was sie bisher gemacht habe die Massenfertigungsaufgabenvon der Bahn auch von der Sorte ergibt irgendwie eine Zieldateiin der ich die Ansteuerung von servus drin habe und mit sie Datei in der ich die Einstellung des Displays drin habe und ähnliche Geschichtendes Ziel wäreFunktionsgruppenzu bilden Module zu bildendie man dann auf diese Weise auslagertund auch nicht mehr anfassen möglich das wir dann ein einziges Mal kompiliertund bleibt so liegenund ich kombiniere immer nur die drei vier fünfsind zwanzig Zeilen mehr in Dateidass es viel schnellerals ich immer wieder neu kompilieren was meine ganzen Bibliotheken gehörtbei einigen hatte ich schon die Include Guardsgesehen das ist nun wirklichganz ganz finstereProgrammiergeschichtedannF N DFHeizungseizogen Punktoder sowassodenndassieht am Anfang fürchterlich aus und es ist auch fürchterlichund eigentlich gebe es auch heute Möglichkeiten das anders zu machen aber irgendwie will die keiner in den Standard aufnehmenähmdas sind die sogenannten Include Guardsdie typischerweiseum diese Headerdateien rumstehendie oben doch was anders stehenMann Visual Studio nimmt erzeugte ein ?? auch gerne InternatZufallszahldie eindeutig istameinfachsten ist einfach hier den Namen der Datei zu nehmen und gerne dannGroßbuchstabensolche Symbole schreibt man in C und C plus plus gerne in Großbuchstabender Sinn dieser Include Guardsistdas diese Datei nicht zweimal eingebundenwird sie sehen das es wieder was mit dem PräprozessorDoppelkreuzdas Sachen passiert bevor derCompiler überhaupt anfängt zu laufen richtig anfängt zu laufenanaus folgendem Grundees kann ja folgendes passierenwenn ichrichtig kompliziertes Programm habesowasmeint Punkt C von mir aus nicht richtig kompliziertes Programm habedas hiermehr Header-DateiinkludiertPunkt gutund noch eine andere Header-DateiinstalliertMSAPunkt HPunkt W Punkt Hob es richtig kompliziert wird kann sein dass dieHeader Dateien selbst wieder andere Headerdateieninkludierenwarum nichtdas ich in der Header-Datei auf Sachen zurückgreifenmuss die anderswoschonin der Header-Datei drin stehensolche Situationen können nach ?? passierenund dass es fies weil man dieses C Punkt H gleich zweimal eingebundenwürdefür diese eine Dateimaine Punkt sie kompiliertaber C Punkt habe gleich zweimal eingebundendas führtzu blöd sind je nachdem was er drinnen stetswir sind weit davon entferntdass es Blödsinn produzieren würde aber je nachdem was man da reinschreibt kannst Blödsinn produzierenund deshalbist man gleich zu Beginn vorsichtigund schreibt in Stuttgarts dran rumhabenwir dafür sorgendass diese Header-Dateinur einmalpro Cedateieingebundenwerden kanndaskönnte ich ja auch mal wieder vorführendass er jetzt ziemlich blödsinnigfolgendes zu tunim Endeffekt kann das passierenwir werden das nicht so direkt zu Fuß hinschreiben aber es könnte ja sein dass sie zwei verschiedene Headerdateien inkludierenund dann in den Header Dateiendie sie inkludierendieselbe Header-Datei tituliert wird weil irgendwie so super wichtig ist irgendwelche netten Datenstrukturenoder Sortierfunktionan die sie überall brauchendass die in beiden Headerdateiendrin ist das kann passieren was im Endeffektist die Situation hier nicht auszuschließendass ich eine Header-Datei zweimaldrin habeund diese Include Guardsverhindern und dass diese auch tatsächlich wirklich zweimal gelesen wird sie wird dann nur ein einziges Mal gelesen das erste Mal immer Mac?? Haarja ich ?? zu viel Weise programmiert die letzten Monate so real wie fein ist das ??des gezielt Pfeifenwie fein ist es natürlich empfehlendie Feinheizungum EnnoMoralnicht zu viel Programmiersprachedurcheinanderso ist besseranPunkt erst mal an was der PräprozessorwardasdieähmMähne für die spannendedas ist alles was der Brennprozess aus Maine machen und sie sehen aber feinPunktes ist nur einmal drinwennes ?? sogar noch malvorführenkönnen bisschen tricksen wir in der HeizungHaardateikönne gerade mal bisschen tricksendie mir vor die Include Guardsnehmenauf diese Weiseeiner ist jetzt in den Include Gastlandesaußerhalb der Include Guards das heißt ich würde erwarten den ersten jetzt zweimal zu sehenKomma Project Macundsie sind aber in der Tat der erste kommt jetzt zweimal vor ?? wirklich die Header-Datei zweimal verarbeitetdas dann vor den Include GuardsGleisen an und das ist jetztauch zweimal drinwas man nicht haben willhier der Sitz kein Ärgerbei anderen Sachen werfen Ärger und man ist per se vorsichtig an der Stellewar zuvor den Blutgas reinhat mankeine bösen Überraschungenalso auch wenn eigentlich nicht nötig für diese Header-Dateiwürde man sofort in Stuttgart einsetzensind deshalb auch keine one ist keine herausbauen sie sofort du das trotzdemjedes Entwicklungssystemhat man sowieso sofort dastehen wenn siedas anderswo machen in etwas größeren Regalsystemenund sie bauen Header-Datei steht auch sofortsowas drumrum?? ganz etwas netter schreiben mit Nord Ausrufezeichendie Feind und Ähnlichesam?? typischerweise etwas netter geschrieben sein als je nach Entwicklungssystemals diese Zahlen sofort da hier bei diesem Entwicklungsystemoffensichtlich nicht dem sie Zeit selber schreibenPunkt das ist der Sinn von ?? und die Wirkung von Include Guardsdie Einbindungswächtersozusagenalsummit solchen Situation fertig zu werden eine Header-Datei ist zweimal dabeiwarzuÜbung bauen sie jetzt noch eine weitereCedateiund eine weitere Header-Dateidas ?? als bisschen viel auf einmaldannmir gerade eine neue Dateieine C Datei schreiben was ich gerne hättean Funktionendie buchstabieren sie aus ich hätte gerne eine Funktion die heißtdannsitzen maximal TemperaturVersorgungslage ?? Messungen zu tun habenzuMaximaltempo?? Tournatürlich mit einem geboren was dazu gehört ?? Definitionschreiben sie hinsetzemal TemperaturMinimaltemperaturenhabendann eine Funktion sowas wieist TemperaturokayTemperaturokay ich stell mir vordass man den Zugriff auf irgendein Temperatursensorhatund das in diesen Funktionen ausnutztwie auch immer man auf den zugreifen kannist demTourzu hochPunktnoch eines Temperatur zu niedrig für ?? von Funktionensodie Funktionen sollen stehen in einer Datei namenssinnvollerweiseTemperaturmessungPunkt siebuchstabierensie das mal so weit auswies geht das das Fusionsdefinitionsind gewiss nicht was diese Funktion genau tun aber das es FunktionsdefinitionensindHeader-Datei dazuund in MainemalFunktion davon aufrufenund dann kann man nach ein Mensch quasiseine Regelungprogrammierensolltesagen das ich daher ein Wert übergeben will natürlich sowas ?? es ?? mit insähmInnentemperaturda möchte ich natürlich was übergebenund er soll nichtszurück liefernso sehr der erste aus und dann wird man sich irgendwo diese Temperatur merken das gleich nochals irgendwas für dazwischen passierenund entsprechend die anderenund dazu noch Header-Dateidienächste soll natürlich so aussehen wie die erste hierdanneben eine TemperaturBlablasoder hierdas haben siegrößtenteils gesehen der soll ein Branchenwertzurück liefernist die Temperatur okay ja oder nein das ist ein guter Wertund ich wollteirgendwaserfindenoderin tricksen das die Temperatur intern gemessen wird ich wollte keineTemperatur übergebennichts übergebenkonnte innen drin solle einfachTemperatur messenimmer gleich noch Funktionen mit der man das klarer machen kann das in der Literatur gemessen wird was in TempeltourmessenKommadann irgendwas zurückgebenwird es war nichts vernünftiges ich geb einfach mal voll zurückdassder Compiler das auch FristKommadass es überhaupt keine Trick beim Programmieren wenn sie so hiervonoben nach unten programmierentop ?? programmiert von der hohen Ebene zu niedrigen Ebene gehen von der Anschauung zumähmHaarspaltereischnitteinhergehenist gute Idee dass wir dafür sorgen dass der Compiler das auch immer fressen kann wenn sie nicht mit Antwortenschreibenzu wieder Ärger mit dem Compileretwas Ärgergesorgt ?? dass man irgendwas in ?? zumindest kompilierenund ich sie auf irgendwassyntaktisch falsches grammatisch falsch istdie anderen beiden sollten auch so funktionierenalso wohl davorund dann irgendwas zurückgeben?? natürlich Blödsinn so jetzt ist dieser Zieldateiaber noch nicht fertig zumindest nicht in Zeder fehlt jetzt aber wasder C-Compiler weiß nicht was bool ist der C plus plus Compiler weiß das aber der C-Compiler nicht das was ich werde in dieserZieldateihier noch was studierendas ?? ein bisschen anders machen aber das wäre der erste Gedankeähmein Cloud StandardpoolPunkt Haardamit der Compiler weiß was hiermit wohl gemeint ist wenn er diese Zieldatei übersetztbraucht der Pooldas mache jetzt hier mit der Natur Punkt Hain wie mich das inkludierenguter sie das immer fragen diesegrößer kleiner Kram an die spitzen Klammern stehen immer wenn man waseine Header-Datei haben wir die zum System gehörtund dieAnführungszeichenstehen für meine Header-Datei haben will diezum Projekt gehört das es auch solche ganz komische historische Geschichtean der Liste der einfachen Zweifelsfall aus verschiedenen Verzeichnissenauf diesem System anscheinend nicht nach meiner bisherigen Erfahrung ?? zur ?? genau nachguckenaber offiziell das verschiedene Verzeichnisseaus den dann gelesen wird mitAnführungszeichenaus dem Projektverzeichnisund mitThomasund mit spitzen Klammern wird es aus einem zentralen Verzeichnis gelesen wo allessystemmäßigerHeaderdateiendrin steht wohlzum System deshalb in spitzen Klammernanso ist ?? hierfür eine Header-Dateidas dümmste ist einfach alles zu kopierenund und undund und Punkt weildie Reihen des weichen Header-Datei daraus?? mich der einfach Semikolon ZinssätzerussischenHeader-Datei gewordenist ?? noch keinen Ludger als dieser ?? dazuschreibenund der speichere ich dann als TemperaturmessungTemperaturschon Punkt CarStromsehen jetzt wird dem Atom SMC noch nicht kompiliert dass er sich auch ?? habenhier Erdseiteher machen sollenat FilesTemperaturmessungCnicht die Header DateienPunkt ?? Kommahier stehen nur die Zähler klein S werden PC Dateien kompiliert und die Zeder Dateien hohen sichbei Bedarf Header Dateien rein die Header Dateien werden nicht ausdrücklich alle kompilierter in der Header-Datei ja auf jeden Fall wenn der Compiler das irgendwo liest mit pudelwohl bool wohl Poolwill er ja wissen egalwo das stehtdannwas denn wohl ist es gäbe eine Möglichkeit es anders zu machen aber es ist nun sicher Geschichte sie können jetzt sagen ?? in der Männer Teil möchte ich das jetzt ja verwendenin CloudwarTemperaturmessungWasserentnahme demVermessungshadikönnen natürlich sagenich verlasse mich daraufbald Standardpolisso wichtigdas irgendjemandschon Standard buhlenin der Mail Datei inkludiert hat es aber fast ?? Situation wie eben Standard wohljetzt zweimal inkludierteine sein das ich hier auch wohl haben will und dass ich mir denkenajadamit das funktioniertmuss ich hier inkludierendann Fernsehsessel ich jetzt zweimal drin ist natürlich nur einmal eingebunden weil auch Standardpool HdieseInclude Guards hatdasein Event F Unterstrich Standard wurde unser alter Bekannterähmmitganz viel anderen Krempel aber auch Standardpool hat es in Blutgeisterndas egal was sie tut das Ding wird nur einmal eingebunden?? das könnte man machenwennauch Sie können sich nicht drauf verlassen hier in TemperaturmessungHaarkönnen sich sich nicht drauf verlassen dass jemand anders vorher schon Standardpool eingebunden hatwenn ich das hier weg streichedas in Cloudund es ist hier nicht dabeiweil ihr kein Pool benötigt wird jetzt fehlen jetzt nicht funktionierenLeertastedas Problem der ButlermessungChatte auch Standardpool Hahnhabenwie verhält sich das das Muttermal insgesamt auf Malenwieder zusammen spielt also jetzt haben wir noch eineExcel Dateifür die Temperaturmessungdemund so weiter schreibe ich nicht hin Punkt Haarverfärbung?? du Datei dieebenfalls hier verwendet wirdin Mainz ehmit Standardpoolhabendiewird jetzt inkludierteben der NaturmessungH und sie wird inkludiertin TemperaturmessungCwenn der Compiler TemperaturmessungC kompiliertlädt der Standard nun Haar reinund ist damit glücklich für das Wohlin Temperaturmessungsehenandere das erledigteden roten Teil kompilierenKomma und habe eingeladenin den roten Teil der Portomessung CCompiler weiß was hier wohl bedeutet?? ist fertigwenn jetzt aber Minze kompliziertbeiße nicht was bedeutetes sei denn in TemperaturmessungHaar ist dann wohl drin das Komma ganz eigener Laufer weiß nicht was war passiert ist ?? das hängt damit zusammen dass man diese drei Dateien sind bereits jederzeit jeweils einzeln übersetztin Objektdateiensogar zwischen Formateine CompilermailPunkt sie kompiliert dann weiß er nichts darüber was hierbei TemperaturmessungPunkt sie passiert ist das muss ihm alles noch malmitteilen deshalb hierdas Include von Standardtoolsbei TemperaturmessungHaarwas mantypischerweisemachen würde istdas man hierjetzt in TemperaturmessungCnicht Standard bool Haar inkludiert sondern dass man ganz einfach TemperaturmessungHang zu dir Temperaturmessung?? wird das typischerweiseauseiner ?? garantiert alles beisammendas erlaubt auch das diese Funktion sich gegenseitig aufrufen?? wenn der Compiler den hier sieht TemperaturmessungCCompiler den ?? jetzt siehtsich der hier erst malmitgeteilt welche Funktionen drin sind und das mit dem Standard bool Gerichte ?? auch mitgeteilt dass auch ?? drinalso ?? weiß wirklich alles möglicheund ganz ausgiebigen Funktionen diese Funktion können sich jetzt sogar gegenseitig aufrufen wenn man wollen würde also so wird es typischerweiseausan wird die Header-Datei schreiben da steht alles drin was man Extraglutbrauchtzumindest hier um die Deklarationenzu schreiben wohl brauche ich für die Deklarationdenn wenn ich die eigene Header-Dateiinkludierenin der Zieldatei so wird's typischerweiseaus Komma so wie eben funktioniert ja auchdadurch nicht verwirren lassen das typischerweise ?? und der Form halber schreibe ich sie auch nach den Stuttgarter Weinänderter in derHaarganzrichtig die feinsoundDoppelkreuzsoll ich das noch sagen wie das funktioniertdas Komma seine Familie ganz wiederholt warum das so funktioniertwenn der Compilerder Prozesse soll ich sagen wenn der Präprozessordiese Datei zum ersten Mal siehtdieses Symbol nicht definiert sein es gibt kein Symbol namensder Portomessung Unterstrich Haarist Nord die Feindes ist nicht definiert also machte er weiterdefiniert das Symbolund macht daswas sich gehörtEnde für das FMänner die Dateien nochmals siehtist das Symbol definiertHamster eben beim ersten Mal definierte Symbol ist definiertihr flotte Feindist also falsch geht ?? sofort zum Ent überspringt das allesdas ist diese klassische Konstruktion mit den Include Guardsund diesesdefinieren eines Symbols gilt nur für einen Compilerlaufeswird Heizungsseeübersetzt es wird mein Zeh übersetzt etwasTemperaturmessungC übersetzten Symbole gelten nur für einen dieser Compiler läuft hier demenziellübersetztan den in der das einFeierabendganz neuer LaufheizungCneues Spieldie ganzen Symbol sind wieder weg wenn es nicht ?? definiere und hier den paar Turmes erzählt das drei verschiedene Compilerläufedie nichts voneinander wissender Compiler ist ziemlichsimpel gestricktoder über den jetzt zu des ?? gucken aber die Regelungstechnikwird jetzt nicht mehr so ganz so vielan dieser Stellekönnte mir vorstellen eine Endlosschleifedrin stehtdas wäreganz typisch für solche Embedded ControllerBreitschuh??Klammer zu?? Klammer zuam damit ?? hierzu kenntsollte ichhier obenin Cloud Standardswohl machenwas würde passieren wenn ich oben keine endlos Standard bone mach und hier trotzdemdas Ruf verwendeich verwende zu aber aber nicht Standardpool dabeiProject MacHonigzitiertHonigseitendes Anti schon okay das ist nicht das Spannende hier ich erreiche das getan nichtweil das Endlosschleifeist das was uns derCompiler zwar noch mit gibt das heißt das hatte gar nicht gestört dass Trudi nicht gestört Komma den das du nicht gestört auf oder sogar nicht kennen darf ??es ist ein Temperaturmessungshaartrennender Inhalt dieser Datei wird genommen rein kopiert dieser Datei genommen rein kopiert diese Datei dabei dummes wahrgenommenrein kopiert aber den ?? zur Messung Haar hat ja das Standardtoolvon daher ist es bekannterweisedurch die unsichere Geschichtean das sich dann auch im Praktikum häufiger ?? es funktioniert auch amJahres fusioniert solange bis sie jetzt hier das Include bei Vermessung herausnehmendas zufälligdas Standard wohl drin hatWagenneue Ziermac machengibt's einen Fehlerzu sandigund es gibt ganz viele Stellen an einen C und C plus plus wo's funktioniert obwohl seinen funktionieren solltedannan dieser Stelleunbedingt dann tatsächlicheine Buddha dazuschreibenals anderes unsicherso?? Minimalregelungmachenfolgendes euch mal selbstsogar noch etwas anders haben??folgendes vorstellenist TemperaturgenanntMessung hier sowas istSwisstemperaturist zu niedrigsowasist Temperatur zu NiedrigstelleHeizung anElselsjedes Jahrentsprechend weiterwenn Literatur nicht zu niedrig ist gucke ich ob die Temperatur zu hoch istBeistrich der Heizung aussowas wird jetzt in der Mail Datei stattfindetKomma RadioprotectMac um zu sehen ob das auch syntaktischhinhauteine Warnung ist immer noch dieses Ritter null ?? weglassendann ist der Compiler glücklichCompilerglücklichwerden sie sehen ich sage die Mailfunktionnimmt nicht und gibt ganze Zeit zurückPunkt trotzdem dein bedeutenderenwenn der Compiler so gerne hätte bitteschönähm wegen dieser Endlosschleifeso sieht das danach aus das ister dann ein eine zur Vorzüge von solcher modularer Programmierungdiese ganzen ekligen Details lagen durchausin diesen beiden Zillertal mit Heizung und Temperaturmessungwird etwas finsteres stehen wie irgendwelche Ports angesteuert werden wirkliche Sensoren ausgelesen werdenanrichterlicher Kleinkramund mein Mailprogrammist einfachrichtig dumm und leicht zu lesenwenn Literatur zu niedrig ist ?? als im Anwender Motto zu hoch ist ansonstendie Heizung auskönnte man raffinierter Regeln??Regelungstechnik bei der Frage was raffinierter geht aber das würde schon malgrob funktionierenund das schöne ist das dieses Programm dann so leicht verständlichesich muss jetzt hier nichtirgendwelche finstere Geschichten mit Ports und Bits und Bytes ausbuchstabieren?? Funktion mit einem ordentlichen Namenvon Diva sofort was gemeint ist das Komma mit Chinesen den Romanauch mal Vorzug von Funktionvernünftigen Namenfür die ganzen Geschichtender zusammengefasstensinnvoll verwendbare Bausteinevernünftige Namensowie das dann im allgemeinen ausamgroßnormalmit den Innereienhier von der Debatte um SMC beschäftigengute Frage woher weiß diese Dateimaine Punkt siewurde diese Funktion gebaut sind weiß sie nicht das weiß der Linkerdannder Compilerübersetzt diese EinzeldateienHeizungscementPunkt C TemperaturmessungPunkt sie?? und in dem Objekt CodeDateien jetzt aufmachen aber fünf Minuten ein bisschen knappselbst aber nach gucken sie Gruppen in Objektdateiennach ?? finden Sie Verweisefinden Verweise auf diese Funktionenhierund das macht in der Linke als allerletztesder Linkerbaut hier die richtigen Verweise rein also mein Programm weiß gar nicht sozusagen meine Programmdateiweiß nicht wo die Funktionen stehen die weiß sodass diese Funktion existierendervergibt die Header-Dateidie Headerdateien sagen HalloBeheizung haben Beistrich hallo es gibt solche Funktion die nimmt nichts und liefertdas wird erst mal so alssei Sagenals als Platzhalter eingesetzt hier stehen erst mal der nur Platzhalter trennen und dass das letzte was dann passiert der Linkerder setzt die Platzhaltermit dem was aus den anderen Dateienkommt erst der Präprozessorverzerrte Firma zeigenes kommt erst der Präprozessorder Gassen DoppelkreuzGeschichten aus buchstabiertfür jede C Dateijede C Datei wird in einen Objektcode übersetztund was dann hieraus kommtder Objektcodeenthält es war nurPlatzhaltergestimmtenPlatzhalter im Objekt und jeweils drinund dann kommt der Linkerder das alles zusammen bindet zudem das alles zusammen bindet und der ersetzt die Platzhalter der Seat Asienheizungzehnist die FunktionsstelleHeizung an die kann ich in Mail verwendendann wenn die Platzhalter ersetztein nicht ganzeinfacher Prozess insgesamtnormalerweiseerfahren sie davon nichts gesehen nur die komischen Federmitteilungenvom Präprozessoroder vomechten Compiler oder vom Ligader Leser meldet sichwenn es nicht schafft diese funktionierendePlatzhalterfunktionin Verbindung zu bringen wenn eine Funktion doppelt hatten am Platzhalter hat aber keine Funktion dafürund Ähnlichesdann gibt's Ärger vom Linker das ist das wohl typischerweiseBekanntschaft mit dem Linker machenamaufdie Uhr guckenwollte eigentlich noch folgendeserzählenwir mit dem Sätze maximal und Minimaltemperaturichhättetypischerweise dann gerne Variablenin denen diese Werte gespeichertsind ups maximalTemperaturich hätte gerne eine Variablein der das dann gespeichertistund der soll hierden übergebenen Zahlenwert in der Variable speichernund dann hier weiter untendiese Variable verwendendennwas wäre der Ärgerwenn ich das so mache?? abschließend noch das machenähmwasin dieser TemperaturmessungC möchte ich mir merken was denn aufdas Maximaltemperaturund was als Minimaltemperatureingestelltworden ist das gar nicht lokal jährliche Funktion sein ?? besser sofort wieder weg wenn die Funktion endetich muss dasauf einer höheren Ebene speichernwas ist der Ärger wenn ich das so lasse wie das jetzt hier stehthinaus der Denker vorschreiben lassen Leerzeichen es doch noch mal ausführlich erzählthaben da sollte ein ständig davor stehendamit nur in dieser Datei TemperaturmessungC diese Variableerreichbar ist?? der ganze Tag der vorschreibeist sie auch aus allen anderen Dateienerreichbarwas ich schön istPunkt ?? macht jemand Blöße damitoder verzeiht jemand anders auch ?? war ja mit dem Namen das muss ich nächstes mal ordentlich erzählen was hat das hiermit stetig zu Punkt Fertigvariablenwerden in der Datei drin und Fertigfunktionin der Datei trennen das Konstantenmessen oder noch genauer an der Grenze und so weiter ausbuchstabieren