C:Preprosessor
Fra CodeWiki
C/C++ Preprosessor
C og C++ benytter det samme preprosessor systemet. Preprosessor systemet blir oftet benyttet til å raskt konfigurering og omstilling av kildekoden.
Preprosessor som det ligger i navnet forbehandler koden før kompilatoren og andre programmer setter i gang med jobbene sine. Preprosessoren gjør det mye enklere å bruke samme koden til flere formål og flere platformer, man kan kan f. eks. velge vekk debug spesifikk når man ikke trenger det og raskt legge det til igjen når det er behov.
Innhold |
#include
#include er vel den preprosessoren som de aller fleste kjenner til og legger rett og slett hele innholdet fra filen der #include står
#include "main.h" //for kompilatoren vil main.h ligge her#error
#error vil rett og slett stoppe kompilatoren og vise meldingen som står etterpå.
#error Feil#define, #undef
#define brukes til å definere makroer. Enkle makroer bytter ut makronavnet med makro definisjonen mens de mer avanserte kan ta parametre. #undef brukes til å fjerne definerte makroer.
Koden under viser hvordan man kan forandre variabel typen som blir brukt i koden, denne type konfigurering av variabler er hyppig i bruk for å få den samme koden til å fungere på ulike platformer og under ulike kompilatorer.
#define TALLVAR int
TALLVAR tall1;Når preprossesoren har kjørt vil koden se slik ut
int tall1;De mer avanserte makroene kan ta parametre som sett i koden under, men det er verdt å huske på at preprosessoren ikke gjøre noen form for feilkontroll.
#define SubOne( x ) (--x) int main() { int i = 100; SubOne(i); return 0; }
Når preprossesoren har kjørt vil koden se slik ut
int main() { int i = 100; --i; return 0; }
conditional operators
|
#if |
Hvis det som står etter stemmer så vil linjen etter kompileres |
|
#ifdef |
Hvis makroen som står etter er definert så vil linjen etter kompileres |
|
#ifndef |
Hvis makroen som står etter ikke er definert så vil linjen etter kompileres |
|
#else |
Brukes sammen med #if, #ifndef og #ifdef til å definere alternativer ved usann situasjoner. |
|
#elif |
Else if brukes til å definere alternativer |
|
#endif |
End if brukes til å definere slutten på en statement. |
#define DEBUG #define WINDOWS 1 // disse kan settes til 0 og 1 for å forandre koden som kompileres. #define LINUX 1 // #ifdef DEBUG //siden ifdef brukes trenger man ikke definere det som noe //skriver ut debug info. #endif #if WINDOWS //windows kode #elif LINUX //linux kode #else #error Programmet kan ikke kompileres for noen andre platformer enn windows og linux #endif
I den virkelige verdene vil man normalt bruke makroer som kompilatoren definere til å finne ut hvilke platfrom man kompilerer for, men siden disse makroene er ulike for de ulike kompilatorene må koden tilpasses den kompilatoren man bruker.
Se også
Kategorier: C | C++
