Hallo en welkom terug.
In deze lezing wil ik om te praten over een aantal andere
onderwerpen die u kunt bestuderen.
We zijn eigenlijk de klas aan het afronden.
We ronden het af.
En dus kregen we niet om alles te dekken.
Het is duidelijk een beginnerscursus.
Er zijn dus veel geavanceerde onderwerpen die je verder kunt
bestuderen om c echt, echt te worden geweldig in c-programmeren, en ik wilde er
gewoon een paar noemen.
Dus ten eerste deden we dat niet ga naar typedefs.
Ik had graag gehad daarover gesproken, maar het is
meer een geavanceerd concept.
We hadden het over opsommingen.
En opsomming is een manier om je eigen type maken.
Maar specifiek in c, er is een trefwoord genaamd typedef en u kunt
uw eigen gegevenstypen maken.
Dit is erg handig, meer van een geavanceerd concept.
Je zou zeker kunnen leer daar meer over.
Er is veel meer informatie over de preprocessor waarover u meer
te weten kunt komen, met name tekenreeksaaneenschakeling.
De preprocessor onthoudt die vóór de compiler wordt uitgevoerd.
We leerden over de gedefinieerde verklaring.
We hebben nog een paar andere dingen geleerd hier en daar, maar
de preprocessor kan een hele andere sectie zijn met daar veel meer informatie over.
Je kunt het in principe gebruiken om optimaliseer een groot deel van uw code, zodat u deze
van tevoren kunt uitvoeren.
U kunt inline-functies uitvoeren die in de preprocessor draaien,
allemaal leuke concepten.
Er is veel meer over lege sterren.
Void sterren, onthoud, veel flexibiliteit.
In het bijzonder de malloc functie retourneert een lege ster.
We kunnen functies maken die ongeldig zijn pointers en geef de lege pointers door
om het flexibeler te maken.
Er is nog veel meer daar kunnen we over studeren.
Statische bibliotheken en gedeelde objecten.
We hebben het hier niet over gehad concept van een bibliotheek.
We gebruiken bibliotheken wanneer we linken.
Vooral veel van de
bibliotheken zijn gedefinieerd in de c-standaardbibliotheken.
Maar u kunt uw eigen bibliotheken maken.
We hebben programma's gemaakt.
Programma's zijn processen die in het geheugen draaien.
Maar bibliotheken zijn eigenlijk andere code die u kunt hergebruiken in andere programma's.
Dus bijvoorbeeld de c standaardbibliotheek.
Als je hebt geprogrammeerd in andere talen zijn het meestal API's die bij
de taal worden geleverd.
Er zijn twee soorten bibliotheken die u kunt maken.
U kunt een statische . maken bibliotheek waar je al
die code compileert wanneer je linkt.
En dan kun je ook een gedeelde object waar u tijdens de uitvoering van het
programma naar toe gaat: zoek functies op en roep ze op.
Dus statische bibliotheken worden meestal beëindigd in een punt a en ze
worden op statische tijd gecompileerd of ze worden gecompileerd in wanneer u het programma compileert.
Gedeelde objecten zijn dot so-bestanden of ze zijn ook, je kunt ze een beetje zien
als dll's als je ooit gehoord van dynamisch koppelen van
bibliotheken en visual c plus plus.
Maar de gedeelde objecten zijn geen compileertijd.
Nogmaals, het is een manier om code opnieuw te gebruiken.
We zouden deze concepten kunnen bestuderen en ik kan u laten zien hoe u zowel statische
bibliotheken als gedeelde objecten kunt bouwen.
Macro's.
We kregen de kans niet om over een macro te praten.
Dit is een geavanceerd onderwerp.
Dit wordt uitgevoerd door de preprocessor om voornamelijk substitutie te
doen, stringsubstitutie.
Enkele van de functies die we bestudeerd zijn eigenlijk
geschreven als macro's, zoals de assert macro.
Macro's kunnen worden verkend veel gedetailleerder.
vakbonden.
Vakbonden zullen meestal ga mee met structuren.
Het is een manier om meerdere verschillende soorten geretourneerde gegevens of verschillende
soorten lidelementen binnen a structuur die hetzelfde voorstelt.
Dus je zou een structuur kunnen hebben dat één lid heeft, maar dat lid
kan een enter zijn en daar zou je vakbond voor gebruiken.
Andere onderwerpen functiewijzers.
We hadden het over karakter pointers voornamelijk, en zelfs integer pointers
en dubbele pointers.
Maar je kunt wel degelijk aanwijzingen hebben die wijzen op verschillende functies.
Dus terwijl uw programma draait, u kunt één functie uitvoeren.
En dan de volgende keer dat het loopt, het kan een andere
functie uitvoeren op basis van gebruikersinvoer of zoiets.
Functiewijzers zijn: een heel ander onderwerp.
Geavanceerde aanwijzingen.
Er is nog veel meer aan wijzers dan wat we hebben besproken.
We bespraken de basis van pointers, maar we zouden veel
gedetailleerder over pointers kunnen praten.
Er zijn echte wijzers naar wijzers, er zijn dus dubbele aanwijzingen, en dat
is een meer geavanceerd toponderwerp.
Variabele argumenten voor functies.
Deze worden genoemd als variabele functies.
We gebruiken de printf-functie dat een variabel aantal
argumenten heeft, maar dat hebben we niet gedefinieerd alle functies waarvan we een variabel
aantal argumenten hadden, konden we verken dat concept erg nuttig.
Dynamische koppeling.
Dit is wanneer je een opent bibliotheek tegelijk en het is een beetje anders dan
een gedeeld object.
U kunt bibliotheken openen tijdens runtime en het verhoogt de prestaties
en het maakt uw uitvoerbare programma's kleiner.
Dus dlm open er is een echte bibliotheek bellen om dit te doen.
Signalen, vertakkingen communicatie tussen processen.
Dit kan allemaal inter-process worden onderzocht communicatie is wanneer je twee programma's hebt
die ze willen communiceren.
Er zijn verschillende manieren dat ze kunnen communiceren.
Ze kunnen communiceren via bestanden.
Ze kunnen communiceren via iets dat een socket wordt genoemd.
Ze kunnen communiceren met behulp van piping.
Er zijn verschillende technieken uit daar, maar het is wanneer twee processen
met elkaar willen praten.
Forking is waar je kunt een ander proces creëren.
Er zijn bibliotheken om te maken andere processen in uw code.
Als je een andere zou maken proces
in uw code, zou het zijn eigen adresgeheugenruimte hebben en het kan je programma een
beetje efficiënter maken.
En dan signalen, we zijn er niet op ingegaan veel, maar signalen worden gebruikt
voor het debuggen in het genereren van verschillende berichten naar verschillende programma's.
Threading en gelijktijdigheid.
Nog een geavanceerd onderwerp dat je wilt studeren.
Dit maakt meerdere uitvoeringen mogelijk punten in uw programma.
Hiermee kunt u code uitvoeren bijna tegelijkertijd.
Het is dus iets van efficiëntie.
Als je een langlopende taak hebt die u moet doen in uw programma, zoals
het controleren van gegevens of wachten op gegevens of misschien leest uw taak een enorm bestand,
u kunt een andere maken thread om dat te doen en dan nog
andere delen van je programma uit te voeren tegelijk in combinatie.
stopcontacten.
Sockets worden gebruikt voor netwerken.
Sockets zouden worden gebruikt als je wilde! om verbinding te maken met een andere computer en gegevens op
te halen van die andere computer.
Netwerken is heel erg groot omdat we heb internet en al het andere.
Zo kom je er alles over te weten stopcontacten en zie ook.
Er zijn twee functies: setjump en verspringen genoemd.
Dat is voor het herstellen van de staat.
Die zouden we kunnen bestuderen in goed detail meer over
geheugenbeheer en fragmentatie.
Dit gaat niet alleen over malloc, maar dit is hoe u uw geheugen kunt beheren en op
de heap of de stapel kunt plaatsen.
U kunt ervoor zorgen dat uw programma is een beetje efficiënter,
dus je hebt niet zoveel fragmentatie.
Fragmentatie is waar je geheugen hebt op verschillende locaties, en het is
niet opeenvolgend, dus het kan moeilijker zijn om neem meer tijd om die herinnering op te zoeken.
Je kunt fragmentatie verminderen.
We kunnen werken aan het maken van de programma's draagbaarder.
In het algemeen, c-programma's zijn behoorlijk draagbaar.
Maar er zijn meer technieken die u kunt gebruiken om ervoor te zorgen dat wanneer u uw
programma eenmaal schrijft, het wordt uitgevoerd op veel verschillende besturingssystemen en u hoeft
het niet te herschrijven.
We zouden in wezen kunnen gebruiken enkele van de posix-normen die
beschikbaar zijn in c.
We kunnen ervoor zorgen dat afhankelijk van op welke andere
versie van de c-standaard, dat ze? werken in meerdere standaarden door gebruik te
maken van bepaalde conventies.
We zouden ook programma's kunnen schrijven die: directe interface met de kernel.
Onthoud, de kernel is de hersenen van het besturingssysteem.
De kernel bevat alle stuurprogramma's.
Het bevat allerlei soorten oproepen geheugenfuncties op een lager niveau.
Het doet veel verschillende informatie.
Dus de kernel heeft specifieke functionaliteit waar u ermee kunt
communiceren in uw c-programma.
Dit zou laag zijn niveau embedded dingen.
Dus we kunnen telefoontjes gebruiken zoals IO-besturingselementen.
We zouden stuurprogramma's kunnen maken om rechtstreeks met hardware praten.
Er staat nog veel meer op de compiler en verschillende
vlaggen die u kunt doorgeven aan de compiler of de linker, wat je
programma weer efficiënter maakt.
We hebben geen kans gekregen om praten veel
over een heleboel verschillende verschillende vlaggen.
We hadden het vooral over het dashboard muur en enkele andere
basiselementen, maar niets geavanceerder.
We hadden het over de debugger en hoe u toepassingen kunt debuggen.
De debugger in codeblokken was via de grafische gebruikersinterface.
Maar het echte voordeel van een debugger: is onder de motorkap het gebruikt gdb.
Gdb is de gnu-debugger.
En we hadden het alleen over breekpunten en het te gebruiken via de grafische gebruikersinterface, maar
u kunt doe eigenlijk nog veel meer met gdb.
We kunnen door de gdb-debugger gaan geef vanuit de console verschillende commando's,
doe veel meer met de kernbestand begrijpen hoe het kernbestand
moet worden gelezen met gdb, a veel leuke geavanceerde onderwerpen daar.
Profilerings- en traceertools.
We hebben het niet over sommigen gehad statische analysatoren, enkele tools die uw code kunnen
analyseren voordat u voer je programma uit om te
zien of er dode code is of dat die er is eventuele slechte programmeerpraktijken.
En dan ook nog het traceren van tools, s trace, d trace, g profiel, dat zijn allemaal belangrijke hulpmiddelen
die u kunt gebruik om te zien om u te helpen bij het opsporen van
fouten en om u te helpen de efficiëntie te meten of hoeveel geheugen u gebruikt of
de prestaties van uw programma.
Er is ander extra geheugen foutopsporingsprogramma's, zoals valgrind.
Dit helpt als je een like hebt race-omstandigheden of u
heeft problemen met geheugenbeschadiging.
Vaak als je aan het managen bent je geheugen en je hebt buffer overflows of geheugenlekken, het
is heel erg moeilijk om die te vinden.
Er zijn dus tools die dat kunnen helpen u die zoals valgrind te vinden.
En zo is er veel anders onderwerpen die u kunt verkennen om
een expert te worden in c.
We raakten de basis.
We raakten aan de echt, echt belangrijke dingen om te beginnen.
Maar met deze extra onderwerpen kunt u een expert worden.
Dank u.