Hoe je begrijpt wat een preprocessor is
Dus als iemand het over een processor in de computerwereld heeft, bedoelt hij over het algemeen een van die siliciumchips die rekenkracht verwerken – zoals een CPU, GPU, APU, NPU, enzovoort. De “P” in CPU of GPU staat voor “Processing”, wat vrij voor de hand liggend is, maar toch. Elk van deze processors is een soort specifiek gereedschap voor een specifieke taak. Maar hier is het punt: een preprocessor heeft niets te maken met je daadwerkelijke hardware, groot of klein. Het gaat meer om de code voordat die überhaupt de processor bereikt. In principe is het een programmeerconcept, vooral in gecompileerde talen, en soms raken mensen in de war over wat dat precies doet.
Wat is een compiler?
Een compiler is software die je code omzet in machinetaal die de hardware van je computer kan begrijpen. Dit is cruciaal, want in tegenstelling tot hoe mensen code lezen, hebben machines deze in een specifiek formaat nodig. Veel talen, zoals C of C++, moeten gecompileerd worden. Andere, zoals Python of JavaScript, worden vaak on-the-fly geïnterpreteerd, waardoor ze flexibeler maar soms ook minder efficiënt zijn. Wanneer je een programma compileert, kan het een paar seconden of een paar minuten duren als het een groot programma is. Als je aan een grote app of game werkt, kun je soms rekenen op een flinke wachttijd.
Waarom zou je gecompileerde talen gebruiken? Nou, ze zijn vaak moeilijker te reverse engineeren – daarom geven bedrijven er vaak de voorkeur aan om hun code te beschermen. En gecompileerde programma’s zijn meestal kleiner en sneller omdat de compiler de code kan optimaliseren. Maar ja, hoe groter het project, hoe langer de compilatietijd – geen verrassingen daar. En omdat Windows natuurlijk alles iets complexer moet maken, zie je mogelijk wat extra stappen als je problemen met builds probeert op te lossen.
Wat doet een preprocessor?
Dit is waar het een beetje vreemd wordt, maar wel nuttig. Beschouw een preprocessor als een hulpmiddel in een vroeg stadium dat je code aanpast voordat de echte compilatie begint. Hij loopt door de broncode, voert zoek-en-vervang-magie uit en voegt stukjes toe of verwijdert ze op basis van door jou ingestelde regels. Meestal roept de compiler hem automatisch aan, maar je kunt hem indien nodig apart uitvoeren. Het is vooral handig in C- of C++-projecten, waar je te maken hebt met includes en macro’s.
Wanneer u bijvoorbeeld `#include
Conclusie
Een preprocessor is in principe een tool die je code helpt voorbereiden voordat deze naar de compiler gaat. Hij scant op speciale instructies (zoals includes of macro’s) en vervangt deze door de juiste inhoud of slaat bepaalde onderdelen over, afhankelijk van je buildopties. In de ene configuratie werkt hij misschien perfect; in een andere configuratie kan hij vastlopen of vreemd gedrag vertonen. Meestal is het een stap achter de schermen die, als je hem begrijpt, het oplossen van problemen een stuk eenvoudiger maakt. Ik weet niet waarom het soms zo ingewikkeld is, maar zo werkt programmeren nu eenmaal: lagen, lagen.