I denna handledning kommer du att introduceras till c förprocessorer, och du lär dig att använda #include, #define och villkorlig kompilering med hjälp av exempel.
C-förprocessorn är en makroförprocessor (låter dig definiera makron) som förvandlar ditt program innan det kompileras. Dessa omvandlingar kan vara inkludering av rubrikfil, makroutvidgningar etc.
Alla förbehandlingsdirektiv börjar med en #
symbol. Till exempel,
#define PI 3.14
Några av de vanliga användningarna av C-förprocessorn är:
Inklusive header Files: #include
Det #include
preprocessorn används för att inkludera header-filer till C-program. Till exempel,
#include
Här stdio.h
är en rubrikfil. Det #include
direktiv preprocessor ersätter ovanstående linje med innehållet i stdio.h
rubrikfilen.
Det är anledningen till att du måste använda #include
innan du kan använda funktioner som scanf()
och printf()
.
Du kan också skapa din egen rubrikfil som innehåller funktionsdeklaration och inkludera den i ditt program med detta förprocessordirektiv.
#include "my_header.h"
Besök den här sidan för att lära dig mer om hur du använder rubrikfiler.
Makron med #define
Ett makro är ett kodfragment som får ett namn. Du kan definiera ett makro i C med hjälp av #define
förprocessordirektivet.
Här är ett exempel.
#define c 299792458 // speed of light
Här, när vi använder c i vårt program, ersätts det med 299792458
.
Exempel 1: #define preprocessor
#include #define PI 3.1415 int main() ( float radius, area; printf("Enter the radius: "); scanf("%f", &radius); // Notice, the use of PI area = PI*radius*radius; printf("Area=%.2f",area); return 0; )
Fungerar som makron
Du kan också definiera makron som fungerar på liknande sätt som ett funktionsanrop. Detta kallas funktionsliknande makron. Till exempel,
#define circleArea(r) (3.1415*(r)*(r))
Varje gång programmet möts circleArea(argument)
ersätts det med (3.1415*(argument)*(argument))
.
Antag att vi klarat 5 som ett argument sedan, det expanderar enligt nedan:
circleArea(5) expands to (3.1415*5*5)
Exempel 2: Använd #define preprocessor
#include #define PI 3.1415 #define circleArea(r) (PI*r*r) int main() ( float radius, area; printf("Enter the radius: "); scanf("%f", &radius); area = circleArea(radius); printf("Area = %.2f", area); return 0; )
Besök den här sidan för att lära dig mer om makron och #define preprocessor.
Villkorlig sammanställning
I C-programmering kan du instruera förprocessorn om du ska inkludera ett kodblock eller inte. För att göra detta kan villkorliga direktiv användas.
Det liknar ett if
uttalande med en stor skillnad.
Det if
uttalande testas under exekveringstiden för att kontrollera om ett block av kod ska utföras eller inte, medan de villkors används för att inkludera (eller hoppa över) ett block med kod i programmet före avrättningen.
Användning av villkorad
- använd annan kod beroende på maskin, operativsystem
- sammanställa samma källfil i två olika program
- att utesluta viss kod från programmet men att behålla den som referens för framtida ändamål
Hur använder jag villkorligt?
Om du vill använda villkorlig, #ifdef
, #if
, #defined
, #else
och #elseif
är direktiv används.
#ifdef-direktivet
#ifdef MACRO // conditional codes #endif
Här ingår villkorliga koder i programmet endast om MACRO är definierat.
#if, #elif och #else-direktivet
#if expression // conditional codes #endif
Här är uttryck ett uttryck av heltalstyp (kan vara heltal, tecken, aritmetiskt uttryck, makron och så vidare).
Villkorliga koder ingår endast i programmet om uttrycket utvärderas till ett värde som inte är noll.
Det valfria #else
direktivet kan användas med #if
direktivet.
#if expression conditional codes if expression is non-zero #else conditional if expression is 0 #endif
Du kan också lägga till kapslade villkor för din #if… #else
användning#elif
#if expression // conditional codes if expression is non-zero #elif expression1 // conditional codes if expression is non-zero #elif expression2 // conditional codes if expression is non-zero #else // conditional if all expressions are 0 #endif
#definierad
Den speciella operatören #defined används för att testa om ett visst makro är definierat eller inte. Det används ofta med #if-direktivet.
#if defined BUFFER_SIZE && BUFFER_SIZE>= 2048 // codes
Fördefinierade makron
Här är några fördefinierade makron i C-programmering.
Makro | Värde |
---|---|
__DATE__ | En sträng som innehåller det aktuella datumet |
__FILE__ | En sträng som innehåller filnamnet |
__LINE__ | Ett heltal som representerar det aktuella radnumret |
__STDC__ | Om följer ANSI-standard C, är värdet ett icke-noll heltal |
__TIME__ | En sträng som innehåller det aktuella datumet. |
Exempel 3: Få aktuell tid med __TIME__
Följande program matar ut aktuell tid med hjälp av __TIME__
makro.
#include int main() ( printf("Current time: %s",__TIME__); )
Produktion
Aktuell tid: 19:54:39
Rekommenderade avläsningar
- Linjekontroll
- Pragmas
- Förprocessorutgång
- Andra direktiv