[Playlisten] [Impressum und Datenschutzerklärung]

04.03.2 weiter Präprozessor, #include-Guards


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

das wäre ein mageres Quadrate erzeugtes sucht sichalle Vorkommen Fonds quer in GroßbuchstabenKlammernnimmt das was da drin steht in den Klammernund ersetzt das ganze durch Wasser wünschten in den Klammern Sternchen was da drin stand mit den Klammernrein suchen und ersetzeneinJahr nicht ganz intelligente Art an Suchen und Ersetzen stellen sich vor sie hätten jetzt eine Variable in Argleich noch einsins AS gleich ist möchte ich hier bittewo ervonvon mir aus CHhabenentweder Präprozessordurchgehenund diesen Ausdruck ersetzen durch CHmal CH rein durchsuchen und ersetzenzuMaydas an im Editoreinsehen was passiert ?? Sinus passiert istdie sechzehn sich bei den ausbuchstabiert und aus dem Squaredance ein CH mal CH geworden Punktdas sieht auf den Antrieb auf Anhieb sieht das aus wie eine gute Ideeimmer darüber nachdenkt ist das gar keine gute Idee mehr dass es heute verpönt ist es diesen sandte die Feingeschichteist heute eine verpönterdasletzte was ich tun kann der Meiner wies imSkript habe Cist gleichmehr vondieFlussdie ??das sieht erst mal so Personal plausibel aus ich möchte gratulierenwas wird aber tatsächlich passierenalso diese Makrosganz blöd ist Punkt was ist ?? Punkt was in den Klammern stehtunter machte Suchen und Ersetzen in dem was in den Klammern steht Sternchen was in den Klammern steht also D plus E mal D plus Eeinmal vorgeführtPunktauch das ist natürlich lass ich heute auchD und Eden tatsächlich haben sollKommasie habe ich sie wieder definiert und sofort in das aucharmund guck ich mir anwasder den gebaut hat?? ein BlödsinnSinn was draus geworden ist E-Plus ehemaligeChaussee und das ?? überhaupt nicht was ich haben wollte es gibt Kniffe um das zu verhindernein Kniff wäreein Kniff wäreein Tipp wäre das hierKlammern setzealso wenn sie solche Makros sehen wundern Sie sich nicht über die massive Anzahl an Klammernmit den Klammern ist wieder gerettetes aber einfach zu gefährlich die Moral ist verwenden Sie möglichst keine Makroser verwenden sie auch nichtdie die Vereins was man machen würde heutzutagein C99ist folgendeswürde Schreibens tätiginsMeer warf Channels auch nicht groß geschrieben dieses groß Schreibenwar meine nette Idee um anzuzeigen hallohier schlägt der Präprozessor zu alles was alles wurde der Prozessor zuschlägt Schreibens in Großbuchstabenklassischer Weise das ?? keine besondere Bedeutung und Warnhinweisheute würde man den Kleinbus schreiben dann schreiben numberBeistrich so mit den großen Ohren Klammer auf channelsnaherChannelsgleich sechzehn würde man heute schreiben ich ständigsetze ich den ?? ConststädteContent würde man schreiben solchermaßenaus der die consent würde man schreiben das ist eine Konstanteund man würdedieses quer bauen alseine Funktionund die wäre staticInlinewürde die heißeninsquerWEAinXund sie würdeX mal X zurück lieferngucken ob ich dann Blödsinn geschrieben habePunkt es gibt Warnhinweis weicht sie Niegesgewann weiß weil ich die nie verwende aber okay so würde man es heute schreiben das ist die klassische Art in C und C plus plusalles was sie sehen was älter ist als zehn Jahre hat das massiv drinund aus der Politik Kompatibilitätsgründenbleibt man dabei die älteren Varianten von C konnten das auch nicht andersähm heutige See kann das in dieser Form C++ kann es nicht in dieser Formdas wäre schöner ist es sichererund saubererund geht nicht über den Präprozessoran der Stelle ist der Präprozessor arbeitslosund deshalb auch in den modernen Sprachen gab und sie Schadenfür diese Geschichten brauchen Präprozessor eigentlich nicht mehrunddeshalb nicht an der Stelle noch einfach raus meint die Möglichkeit mit konstantdiese Variable ist eine keine variabel ?? Konstantekann überallZweifel ziehen sechzehn Banken über sechzehn Einsätzenmit Inline sage ich diese Funktion möge bitte überall aus buchstabiert werden falls möglichArm sowie diesesX mal X überaus buchstabiert wordendas erzähl ich Ihnen also nureine mit die kriegen was diese Ausdrücke hier sein sollten wenn sie die sehenmöglichst nicht selber bauenso ist die moderne Variantesichererundschönerwo sie den Präprozessorsehenin C und C plus plus zwangsläufigeine etwas andere Stelle in den Header-Datei des ferne schon gesehen habenin den Header Dateien finden Sie diese komische schräge Konstruktiondas sieht sehr häufig aussehnen Doppelkreuzenhier schlägt der Präprozessor wieder zuamdas wärediese Struktur ?? AußenrumindexNummer vier ist eine ganz typische Struktur fürHeader Dateienfürdie Nummer viereinesolche Headerdateien aufmachen finden Sie da gerne sowas wie if en Dev das soll heißen im Nord definiertetwa die feindefiniert F Norte Feind soll das heißenund dann kommt ein Symbolihrdas man einfach so nennt wie die Datei gerade reist sehr wohl null einszu Hassmann Dateien schreibe Unterstrich Hes ist Konventionist auch Karl-Heinzund sie nennen können man nennt es so wieder die DateiUnterstrich Haaramdannkommt ein Vereinnämlich genau was sie oben stehtderselbedann kommen die ganzen Deklarationenund dann kommt ein Endesollten Sie das in praktisch jeder Header-Dateies nennt sich Include Guardsin gutInclude Guardsdas istwieder so eine Redewendungein Diplomin C und C plus plushat sichüber die Jahr Jahre und Jahrzehnte darauf verständigt es so zu machen das anders machen könnenaber irgendwie ?? erläuternde Würde so zu machenanInclude Guardspraktisch jede Header-Dateiwerden teilweise um noch malsie sind ist ja Datei von mir selbst nochmals sehenwenn das Symbolwas ich hier so benannt haben sich definiertesdefiniere das Symbol dann kommen die ganzen DeklarationenEnde der Fahnenstangealles Anweisungen an dender Prozessoranwas wird passieren??ichkann es immer dann zu Fuß durchdiskutierenwarum dieser Unsinn warum der Niedrigmanipulationmit diesem Unsinnfür Lückentext Nummerfünf??müsste das mal völlig ?? Text Nummer fünfan wenn sie kompliziertesProgramm habenkönnen Sie praktisch nicht vermeiden das Header mehrfach inkludiert werdendass ein Header einen anderen Headernoch mal inkludiertder sich vor ich bräuchte in diesem Header noch eigenen Spezialfunktionvon einer anderen Zieldateider müßig hier ja diesen Header wieder inkludieren und so weiter und so fort es wird haarsträubendan Mannheim Strip an Header Dateienund alles geht kreuz und quer durcheinanderund die was man vermeiden möchte ist dass diese Header Dateien mehrfachkompiliert werden der Compiler sollte jeder Header-Datei bitte ein einziges Mal sehen bei dieser Header-Datei wir das nicht das Problem dürfte der Compiler mehrfach sehen gibt Header-Datei die da der Compiler nur ein einziges Mal sehenund diese in Stuttgartstellen sicher dass der Compiler diese Datei wirklich nur ein einziges Mal siehtauch wenn sie mehrfach bei derselben Zieldatei dann in den Gestrüppsanhängernmehrfach vorkommtwar das Komma uns angucken was da passiert ständig vor der Compiler sieht die zum ersten Mal für den Index Nummer fünfeine Compiler der Header-Datei zum ersten Mal siehtokaydieses Symbol NamenssetServo null eins ist ein Symbol wie ebenin die Zahl der Kanäleoder die das QuadratzurückdenkenPunkt Sachen ebendas Ding gebenKlammer auf ChannelsVerein an Makrosymbolsquer ein Makrosymbolgenauso wie dieses hier jetztein solches Symbol ich gucke nach ob dieses Symbol nicht definiert ist ist Nord die Feindist Enderfallesohne Leerzeichen ?? geschrieben Doppelkreuz Defenderist dieses Symbol nicht definiertbeim ersten Durchgang ist es natürlich nicht definiert niemand hat gesagt die fein für dieses Ding Symbol ist nicht definiert heißt meine Dateimeine Datei wurde noch nicht gesehen alles das Symbol nicht definiertder Präprozessor macht mit dem definierenweiter definiert dieses Symboldas bisher nicht definiert warals Lehrer uns dann innen versuchen ersetzen die Feinsymbolentsteht wieder Suchen Ersetzen definiert werden solldas geht auch ohne dass ich sage was da ersetzt werden soll jährlich gesagt alle Vorkommen vonquer Klammer auf X durch X mal X ersetzenEhrlich gesagt alle Vorkommen von number auf kleines O Strich sechzehn ersetzendie können auch sagenalle Vorkommen von selber null eins H durchnicht ersetzen das steht ja eigentlichdamit ist der definiertnächsten Schritt die feindie ganzen Deklarationenwerden ausgeführtmit Sagen eingelesen und dann ausgeführt in die Deflation werden eingelesenund hier kommt das NT ??und zu sagenda fürderhin gesprungenist es auch wieder so geklammert wie bei CBCaber die Klammerung ist Klammer auf Klammer zu schreibt Klammer auf ?? Klammer zuder Präprozessor macht etwas anders da die Schweifklammer nicht mehr das es Schweifklammer ist irgendwas und am Ende stehtBeistrichDoppelkreuz ist irgendwas männlich die Doppelkreuz NFsagen das ist das Ende von derwerden von der Verzweigungstagezusammen weiter das im ersten Durchgang passierenwenn der Compiler die selbe Header-Dateiin dieser die Datei noch mal findet?? wieder nach oben hinPunkt nach ob das Symbol sehr wohl null eins H definiert istwas passiert nunist das Symbol nicht definiert?? wir haben seinen ersten Durchgang definiertalso wird das hier nicht ausgeführtLeerschritt wird übersprungenab dem die Verein und die ganzen Anweisungder Nachkommendeklarationalle die werden übersprungenund der geht sofort zu dem Endeffektdas ist der Gedankeso funktionell diese in Stuttgart das einfach was zum dran gewöhnen sobald Sinne Header-Datei schreibenschreiben Sie dieseInclude Guardsder Forscher hinteraus SicherheitsgründendenBeleidigungender Moral vom Ganzenwofür verwenden Sie eigentlich noch den PräprozessorMenschen verraten die modernen Sprachen haben ein sicher kein Präprozessormehr wozuwenn ich ihn noch?? dies nur für zwei Sachen Präprozessordies nur für zwei Sachen??Anwendung Nummer einsdas Include dass es sich kaum vermeidendas Einbinden von Headerda sollten Sie den Präprozessorsehennoch keine andere Chancealso für das InstitutEntzug von Händlernals in den Präprozessorund die andere Stelle an der dem Präprozessor sehen?? ist nachsind diese in Stuttgartsum zu verhindern dass die Header-Datei mehrfach kombiniert werdendie meisten Compiler haben inzwischen auch andereLösung dafürKomma Bonnsam das leider nicht standardisiertdeshalb sieht man das immer nochpraktisch überall das ist die zweite große Anwendung für den Präprozessordie Include Guardsin Punktundwenn sie Konstanten rauchen oder Makros brauchen möglichst nichtsmehr mit dem Präprozessoraus ganz vielen Gründen vor allen Dingen bei der Präprozessor schon schwer zu die Banken ist wenn hier irgendein Blödsinn passiert die könnte Präprozessornicht in Einzelschrittenlaufen lassenkönne der Prozess sicher nicht in Einzelschritten durchlaufen lassen ?? gucken was er daraus macht sie können sich typischerweiseanzeigen lassen was das Ergebnis nach diesen suchen ersetzen ist aber das ist dann noch alles also schon alleine lässt die Backen halberanmöglichst nicht mit dem Präprozessor arbeiten sondern mit denüblichen Mitteln arbeitensehr