Programmeren in C/De compiler: verschil tussen versies

14 bytes toegevoegd ,  12 jaar geleden
paar veranderingen in tekst en layout
(paar veranderingen in tekst en layout)
{{Programmeren in C}}
== Wat doet een compiler? ==
Zoals elke andere computer-taal wordt ''C'' niet direct door de computer begrepen, maar moet eerst vertaald worden naar machinetaal. In het geval van C. Ditvindt dit proces vind plaats in drie stappen., elk gedaan door een afzonderlijk programma:
 
# De C-Preprocessor''preprocessor'' interpreteert het bronbestand en voert alle ''preprocessor directives'' uit. Deze opdrachten behelsen het invoegen van andere bestanden (''#include <foobar.h>''), het conditioneel opnemen of weglaten van stukken code (''#ifdef FOOBAR ... #else ... #endif'') en het vervangen van gespecificeerde namen (macro's) door een waarde (''#define FOOBAR 123''). Dit resulteert in een ''stream'' waarin, ten behoeve van de compiler zelf en met name de foutmeldingen en waarschuwingen ''#line'' directives staan omdat de regelnummering in de outputstream geen directe relatie meer heeft tot de bronbestanden.
# De C-Compiler''compiler'' zelf interpreteert de output van de C-Preprocessor, interpreteert deze, genereert foutmeldingen en waarschuwingen als dat nodig is en creëert een ''object-file'', waarvan het formaat vaak sterk afhankelijk is van de compiler. In deze ''object-file'' staat niet alleen de resulterende machinecode, maar ook de symbolische informatie: namen en (relatieve) adressen van functies en variabelen, niet opgehelderde referenties zoals functienamen die in een andere object-file staan, initialisatiewaarden voor globale variabelen, etcetera. Wat er precies instaat is overigens ook sterk afhankelijk van de compiler.
# De Linker''linker'' neemt deze object files en een of meerdere bibliotheken (''libraries'') en voegt ze samen tot een programma, waarbij externe verwijzingen naar functies en variabelen worden opgelost en uiteindelijke adressen worden toegewezen aan alle globale variabelen.
 
Hoewel deze stappen vaak onderonzichtbaar water verdwijnengebeuren bij het gebruik van ''Integrated Development Environments'' (IDE's), is het wel belangrijk deze volgorde te begrijpen, want fouten kunnen soms rare consequenties hebben. De ''C''-programmeur heeft, in tegenstelling tot wat vaak wordt gedacht niet met een, maar met (minimaal) twee nauw verweven computertalen te maken, waarbij: de enepreprocessortaal (de ''C-Preprocessor'')en de uiteindelijke broncode voor de eigenlijke C-Compiler samensteltprogrammeertaal.
 
=== CompilersWelke compiler? ===
 
Er zijn vele compilers op de markt, sommigen beter dan anderen. De kwaliteit van een compiler kan worden bepaald aan de hand van een aantal criteria zoals:
* [http://msdn2.microsoft.com/en-us/visualc/default.aspx Visual C++] - Commercieel product.<br />
 
=== Wat heb je verder nodig? ===
 
* Een goede ''Editor'', waarmee je je programma's kunt schrijven. Wees kritisch en kies de editor die je het beste bevalt. Broncode schrijven is een tijdrovende klus en de meeste tijd zul je waarschijnlijk besteden in de editor. Dingen als ''syntax-coloring'' en goede zoek-faciliteiten kunnen veel tijd en (vooral) moeite besparen.
465

bewerkingen

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.