Selles õpetuses tutvustatakse teile c eeltöötlejaid ja õpitakse näidete abil kasutama #include, #define ja tingimuslikku kompileerimist.
C eeltöötlusprotsessor on makro eeltöötleja (võimaldab teil makrosid määratleda), mis muudab teie programmi enne selle kompileerimist. Need teisendused võivad olla päisefaili lisamine, makro laiendused jne.
Kõik eeltöötlemise direktiivid algavad #
sümboliga. Näiteks,
#define PI 3.14
Mõned C-eelprotsessori tavalised kasutusalad on:
Sealhulgas päisefailid: #include
#include
Eeltöötluse kasutatakse hulka kaudu faile C programmid. Näiteks,
#include
Siin stdio.h
on päisefail. #include
Eeltöötluse direktiiv asendab eespool kooskõlas sisu stdio.h
kaudu faili.
See on põhjus, miks peate kasutama #include
enne, kui saate kasutada selliseid funktsioone nagu scanf()
ja printf()
.
Selle eeltöötlusdirektiivi abil saate luua ka oma päisefaili, mis sisaldab funktsiooni deklaratsiooni ja lisada selle oma programmi.
#include "my_header.h"
Päisefailide kasutamise kohta lisateabe saamiseks külastage seda lehte.
Makrod, mis kasutavad #define
Makro on koodijupp, millele antakse nimi. #define
Eeltöötlusdirektiivi abil saate C-s makro defineerida .
Siin on näide.
#define c 299792458 // speed of light
Siin, kui kasutame programmis c, asendatakse see tähisega 299792458
.
Näide 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; )
Funktsioon nagu makrod
Samuti saate määratleda makrod, mis töötavad sarnaselt funktsioonikutsega. See on tuntud kui funktsioonilaadsed makrod. Näiteks,
#define circleArea(r) (3.1415*(r)*(r))
Iga kord, kui programm kohtab circleArea(argument)
, asendatakse see nimega (3.1415*(argument)*(argument))
.
Oletame, et me läbisime argumendina 5, see laieneb järgmiselt:
circleArea(5) expands to (3.1415*5*5)
Näide 2: eelprotsessori #define kasutamine
#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; )
Makrode ja #define preprocessori kohta lisateabe saamiseks külastage seda lehte.
Tingimuslik koostamine
C-programmeerimises saate eeltöötlejat juhendada, kas lisada koodiplokk või mitte. Selleks saab kasutada tingimuslikke direktiive.
See sarnaneb if
ühe suurema erinevusega avaldusega.
if
Avaldus testitakse täitmise ajal aega, et vaadata, kas koodiplokk tuleks ellu või mitte arvestades, et conditionals kasutatakse lisada (või jätke) ploki koodi oma programmi enne täitmist.
Tingimuslike kasutusalad
- kasutage erinevat koodi sõltuvalt masinast, opsüsteemist
- kompileerida sama lähtefail kahes erinevas programmis
- teatud kood programmist välja jätta, kuid säilitada see edaspidi viitena
Kuidas kasutada tingimuslikku?
Tingimusliku, #ifdef
, #if
, #defined
, #else
ja #elseif
direktiivid kasutatakse.
#ifdef direktiiv
#ifdef MACRO // conditional codes #endif
Siin lisatakse tingimuslikud koodid programmi ainult siis, kui MACRO on määratletud.
#if, #elif ja #else direktiiv
#if expression // conditional codes #endif
Siin on avaldis täisarvu väljend (võivad olla täisarvud, märgid, aritmeetiline avaldis, makrod ja nii edasi).
Tingimuslikud koodid lisatakse programmi ainult juhul, kui avaldise väärtus on nullist erinev.
Valikulist #else
direktiivi saab kasutada koos #if
direktiiviga.
#if expression conditional codes if expression is non-zero #else conditional if expression is 0 #endif
Võite lisada ka pesastatud tingimusliku oma #if… #else
lehe#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
#defined
Spetsiaalset operaatorit #defined kasutatakse selleks, et testida, kas teatud makro on määratletud või mitte. Seda kasutatakse sageli direktiiviga #if.
#if defined BUFFER_SIZE && BUFFER_SIZE>= 2048 // codes
Eelmääratud makrod
Siin on mõned C-programmeerimisel eelnevalt määratletud makrod.
Makro | Väärtus |
---|---|
__DATE__ | Praegune kuupäeva sisaldav string |
__FILE__ | String, mis sisaldab faili nime |
__LINE__ | Täisarv, mis tähistab praegust rea numbrit |
__STDC__ | Kui järgitakse ANSI standardit C, on väärtus nullist täisarv |
__TIME__ | Praegune kuupäeva sisaldav string. |
Näide 3: hankige praegune aeg, kasutades __TIME__
Järgmine programm väljastab __TIME__
makro abil praeguse aja .
#include int main() ( printf("Current time: %s",__TIME__); )
Väljund
Praegune kellaaeg: 19:54:39
Soovitatavad lugemised
- Liini juhtimine
- Pragmasid
- Eeltöötleja väljund
- Muud direktiivid