[Playlisten] [Impressum und Datenschutzerklärung]

04C.4 Funktionsbibliothek, die sich Zustand merkt; static


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

wir denken uns mal die hätten jetzt von irgendeinem Hersteller in eine Maschinezu einem Bibliothek wirklichHeader-Dateiirgendein Hersteller irgendeines Gerätsliefert uns eine Bibliothek mit einer Header-Dateisowie das typischerweiseund in dieser Header-Datei finden wir Funktionendie die Maschineauf eine bestimmte Stufe schalten das habe ich genannt gehe auf Stufesoundsovielgehe auf Stufe zweiundvierzigsowas möchte ich eine Maschine sagen kannund ich möchtevon der Maschine wissen kann auf welcher Stufe sie gerade stehtinsA gleichaktuelle Stufeein Rührwerk vorstellenPunkt sie können die Bewag sagen die auch schon zu viel Umdrehungen pro Minuteund sie kann aber zu jedem Zeitpunkt sagen gib mir mal deine aktuelle Umdrehungszahlwas immer das sein mag?? oben übergebe ich eine Zahlums einzustellenkriege nichts zurück hier untenÜbergewicht wichtig für die Zahl der wissen ?? eine Zahl zurücksie schreiben mal die Header-Dateiund dann passt man dann bisschen weiter wie sehr die Header-Datei dazu ausdie Header-Datei die wir geliefert kriegen würdenzu dieserComputer steuerbaren Maschinensehr gute Frage wozu braucht Header-Dateieine sehr gute Frage?? Universe das noch malzu erklären ?? ich nämlich zu deutlich gemachtwenn jemand eine Bibliothek schreibtsich vor Microsoft setzt sich hin oder der Hersteller hier vondieser Entwicklungsumgebungsetzt sich inirgend eine Firma die ein Computersteuerwar's Geräts liefert setzt sich hin schreibt eine Bibliothekmit der sein Gerät dann gesteuert werden kanndiese Leute werden an die Datei schreibenfür sichund dazu eine Header-Datei schreibt sie kriegen die Header-Dateisie interessiert nicht was in der Bibliothek im Prinzip passiert das sind sie nachher und Missbrauch im Praktikum genauso fusioniert das was imPraktikum eine Zieldatei die absolut undurchdringlichistund dazu eine Header-Dateimit Integrationsie interessiert nur die Header-Dateiweil in ihrem Programm bindet sie die Header-Datei ein und rufen die Funktionen wahrscheinlichinteressiert mich die potentielle Fusion gebaut ist ?? die dritte Potenzversiongebaut ?? sie verwenden einfach die Funktiondas ist das schöne sie sagen einfach Header-Dateistudieren und hinter den Kulissen passiert der Restdas ist der Sinn der Header-Dateifür den Anwender fürdas System ist es in der Header-Datei dass hier die Deklaration drin steht und ?? Ramadanstrukturendefiniert sind und sie jetzt in ihren eigenen Programmendiese Funktionen und vielleicht dann Strukturen verwenden könnenkriegen damit sozusagen auf einen Rutschdas Wissender Leute die ähnliche Bibliotheken geschrieben habenKomma so Neudateidie neue Header-Dateihierdie wieder sowieso in Stuttgart stehenEnde desSommers sich nennendas MaschineUnterstrich Hsollte das aber sofort speichern alsMaschine Unterstrich Hnanicht gleich sein müssen Beistrich können die sonst wie nennen und hier besonders die Konstante benutzenes ist einfacher wenn die gleichenund die Vereinkonstantewenn sie nicht definiert warPunkt ?? entwirftSchlafso natürlich die eine Funktion habenmit der ?? über sie laufen bestimmte Stufe stellen kann ?? es kommt nichts zurück aus der Funktionsie heißt gehe auf StufeStufeund ich gebe ihreine Zahl denn jetzt man es was dazwischen vorhandendass wir die Deklaration dafürdann sollte Funktion geben mit der ich die aktuelle Stufe abfragen kannsoder Funktionsgewichtnichtsich will ja was wissenund die liefert mir die ganze Zeit zurücksowas wird sie vom Hersteller kriegenneunzig offene computergesteuerteZentrifugeoderdurch ??oder was auch immersie kriegeneineFunktionsbibliothekund dazu eine Header-Dateiwas war noch ?? dass es anderen Header Dateien aber mindestens eine Header-Dateida stünde dann sowas könnenes in der Hersteller Sache lieferte ein Funktionärs die auf Stufe Beistricheine ganze Zahl nicht zurück und so weiter und so weiter so sehr das aus das wir sie kriegenund dann könnte das Anwendenkönnen Sie es in Ihrem eigenen Programm sagenokay inkludierendiese Header-Dateiin CloudPunkt Hkönnte sie ihrem eigenen Programm sagenja ich stelle diese Maschine auf die Stufe ein hunderttausend hundert ?? Komma und an einer Stelle kann ich sagen ?? bin ich dennaktuelleStufekönnen Sie an anderer Stelle seindiese Funktion verwendenBeistrich doch dann StrukturenundKnochen Anführungszeichen obenähmso wird das im Prinzip laufenden Header-Dateisie gerade nur eine Sache noch erklärtdieses es hierwas hat dieses esmit?? hierden es zu tun dieses es daund dieses es da was ?? miteinander zu tunnicht irritieren lassen genau dieses es hierhat nichtsmit diesem es dazu tunes in zwei Variablenan verschiedenen Stellen zufällig gleich heißenaber sie sehen einander nichtnurjetzt baue ich noch eine Zieldateidazu also das was der Hersteller seine Maschine dann intern machen würdenfür den wahrscheinlich nicht Zieldatei liefern sondern einekombinierte Bibliothekandere Geschichteirgendjemandim Haus des Herstellers würde ich sie Dateien schreiben oder C plus plus DateienKommawenn das Malmaschinesehenda sollten jetzt diese beiden Funktionen definiert werden?? also kein SemikolonsondernSchweifklammersollte was passierenPunkt sowird es irgend einen geheimenoder auch nicht so sehr Geheimcodegebenmit der man der Maschine sagen kann dass sie was tun sollan sie steht irgendwas magisches ?? sozusagen drin stelle diese oder jene Bits auf folgendessicher eineBotschaft übers Netz mit folgendem Inhaltdas wird aus unserer Sicht aktuell noch sehr magisch sein Wasser stehtdannaber dieses mit der aktuellen Stufe das ganze hinkriegen ?? ich weiß nicht genau wie die Steuerung der Maschine funktionieren wirdPunktdas ist ein bisschen raffinierteraberdas kann ich schon hinkriegenauf welche Stufe die Maschine zuletzt gestellt worden ist das kriege ich raus?? sie das hinkriegenokay VorschlagReturndeswas halten Sie davonist verlockendaber dieses esist an der Stelle nicht bekannt dieses erst dableibt in diesen Schweifklammer verborgenbis es wird lokal ?? eingeführtund ist nach Ende der Funktionwieder unsichtbar für unsabgeräumtdieses es hier kann auch nicht das aus der Mailfunktionsei dieses es ihr lebt in diesen Schweifklammerund es außer der Schweifklammerunsichtbarauch wenn sie aktuelle Stufe aufrufendie Sichtbarkeit geht nicht in die Funktion reindieses es hierist nicht definiert es müsste uns auch der Compiler sagen ?? sage ProjectMacPro noch schlimmer sogaroder noch viel schlimmeranderes aus einer zu beseitigen stelle ich gerade festwas ist das jetzt angefertigt?? die auf Stufe für den Maingenau ich hab vergessen das ich diese Dateimaschineziert bitte auch kombinierenmussmüssen sie soerst dann legt der Compiler diese Funktion an und der Linker kann sie findendiese beiden Funktionen man nicht wirklich dadie Definition Beistrich dawar nicht übersetzt ?? Compiler des auf der linken hiersind Kommalinke hat sie nicht gefundenso das es das beseitigt aber trotzdem sollte es immer noch nicht kennen?? Jammerdividendefeier es ist an die Feinddieses esauch wenn dann ?? es vorkommtund wennihr ein es vorkommtdas gibt es nichtwie kann man das behebenVorschlag war sie führen hier eine statische Variable einich nenne sie mal Aktuellesesda eine statische Variableund ich soll doch noch ins Dorf vorschreiben damit wir alle wissen das ist eineganz Salbeiganzzahligen Variablen und den möchte ich natürlich hierunten des Aktuelles zurückgebenwas wird uns der Compiler dazu sagen prinzipiell gute Idee aber noch nichtperfektgenau das wird noch nicht fusionieren weil es aktuell es weiterhinWissenschaftler ?? oben lebte sie unten nicht sichtbar?? sehenbei derselben Meinung istist derselben Meinungdas heißtso geht doch nicht was durchich muss dafür sorgen dass diese Variableeben nichtnur hier lokal drin ist sie mussweiter draußen sein sie können Sie auf das auf die Ebene der Dateien ähm in Cso kann das Aussehendas es jetzt eine Variante die erste Ebene der Datei definiert ist und ihr könnt jetzt einfach sagen okay diese Variable hiersetze ich auf esin der Benutzersachestelle jetzt auf Stufe zweiundvierzigsetzt sich diese Variable hier auf es dann kann ich wieder unten wiederhaben?? Protect Macso würde das tatsächlich funktioniereneine Variable außerhalb von Funktionenund wenn sie das tätiger vorschreibenheißt dasdiese Variable ist in der Sichtbarkeit auf diese Datei beschränktder Vorteil ist wenn jemand anderes auf den Gedanken kommt auch so eine Variante namens Aktuelles es zu bauen dass er sich in die Quere kommenund dass mir keiner irgendeinen Unsinn in diese Variable reinschreiben kann von Außenvariablenlebt sozusagen in dieser Dateidas man mit tätigdas Gegenteil wächst der externeund das die Standardeinstellungwird es nicht hinschreiben ist es extern und sie können wenn sich die veranstalten aus jeder Datei drauf zugreifenso ist sichergestelltdiese Variable lebt nur in dieser Datei es kann andere Dateien geben ?? PC Dateien geben mit einer Variable namens Aktuelles esund die würden sich gegenseitig nicht störendannmuss das ja mal sagen ??kurz gefasstwenn sie in der Funktion eine statische Variable habenheißt dass diese Variable wird einmal Programmbeginnin dem Fall auf null gesetzt oder auf zwoundvierzig gesetztbeim nächsten Aufruf der Funktion hat sie den Wertdiesem Aufruf vorher zuletzt hatte diese Variante nicht immer wieder auf zwoundvierzig Gesetz wird nur einmal zu Beginn auf zwanzig gesetztund hat ein Gedächtnis das heißt tätig in der Funktion