C Előkészítő és makrók

Ebben az oktatóanyagban megismerkedik a c előfeldolgozókkal, és példák segítségével megtanulja használni az #include, #define és feltételes összeállítást.

A C előfeldolgozó egy makroprocesszor (amely lehetővé teszi makrók definiálását), amely átalakítja a programot a fordítás előtt. Ezek az átalakítások lehetnek fejlécfájl, makrobővítések stb.

Minden előfeldolgozási irányelv #szimbólummal kezdődik . Például,

 #define PI 3.14

A C előfeldolgozó néhány gyakori felhasználása:

Fejlécfájlokat is beleértve: #include

Az #includeelőfeldolgozó fejlécfájlok C programokba történő felvételére szolgál. Például,

 #include 

Itt stdio.hvan egy fejlécfájl. Az #includeelőfeldolgozó irányelv a fenti sort helyettesíti a stdio.hfejléc fájl tartalmával .

Ezért kell használnia, #include mielőtt használhatná a (z) scanf()és a (z) funkciókat printf().

Létrehozhat egy saját fejlécfájlt is, amely tartalmazza a függvénydeklarációt, és ezt az előprocesszor-irányelv segítségével felveheti a programjába.

 #include "my_header.h"

Látogasson el erre az oldalra, ha többet szeretne megtudni a fejlécfájlokról.

Makrók a #define használatával

A makró a kód töredéke, amely nevet kap. Megadhat egy makrót C-ben az #defineelőprocesszor irányelv segítségével.

Itt egy példa.

 #define c 299792458 // speed of light

Ilyenkor, ha az általunk használt c programunkban, akkor helyettesítjük 299792458.

1. példa: #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; )

Funkció, mint a makrók

Meghatározhat olyan makrókat is, amelyek hasonló módon működnek, mint például egy függvényhívás. Ez függvényszerű makróként ismert. Például,

 #define circleArea(r) (3.1415*(r)*(r))

Minden alkalommal, amikor a program találkozik circleArea(argument), a helyére a (3.1415*(argument)*(argument)).

Tegyük fel, hogy akkor argumentumként 5-öt adtunk át, ez az alábbiak szerint bővül:

 circleArea(5) expands to (3.1415*5*5)

2. példa: A #define preprocessor használata

 #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; )

Látogasson el erre az oldalra, ha többet szeretne megtudni a makrókról és az #define preprocessorról.

Feltételes összeállítás

A C programozásban utasíthatja az előfeldolgozót, hogy tartalmazzon-e kódblokkot vagy sem. Ehhez feltételes irányelveket lehet használni.

Hasonló egy ifállításhoz, amelynek egyetlen fő különbsége van.

A ifkimutatást a végrehajtás ideje alatt tesztelik annak ellenőrzésére, hogy végrehajtanak-e egy kódblokkot, vagy sem, míg a feltételeket arra használják, hogy a végrehajtás előtt egy kódblokkot tartalmazzanak (vagy kihagyjanak) a programban.

A Feltételes felhasználása

  • használjon más kódot a géptől, az operációs rendszertől függően
  • fordítsa ugyanazt a forrásfájlt két különböző programba
  • bizonyos kódok kizárása a programból, de a jövőbeni referenciák megőrzése

Hogyan használható a feltételes?

Ahhoz, hogy használni feltételes #ifdef, #if, #defined, #elseés #elseifirányelveket használnak.

#ifdef irányelv

 #ifdef MACRO // conditional codes #endif 

Itt a feltételes kódok csak akkor szerepelnek a programban, ha a MACRO meg van határozva.

#if, #elif és #else irányelv

 #if expression // conditional codes #endif 

Itt a kifejezés egész típusú kifejezés (lehet egész szám, karakter, számtani kifejezés, makrók és így tovább).

A feltételes kódokat csak akkor tartalmazza a program, ha a kifejezést nem nulla értékre értékelik.

Az opcionális #elseirányelv az #ifirányelvvel együtt használható .

 #if expression conditional codes if expression is non-zero #else conditional if expression is 0 #endif 

A beágyazott feltételes feltételeket is hozzáadhatja a #if… #elsehasználatához#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 

#meghatározott

A #defined speciális operátor segítségével tesztelhetjük, hogy egy adott makró definiálva van-e. Gyakran használják #if direktívával.

 #if defined BUFFER_SIZE && BUFFER_SIZE>= 2048 // codes 

Előre definiált makrók

Íme néhány előre definiált makró a C programozásban.

Makró Érték
__DATE__ Az aktuális dátumot tartalmazó karakterlánc
__FILE__ Karakterlánc, amely a fájl nevét tartalmazza
__LINE__ Az aktuális sorszámot képviselő egész szám
__STDC__ Ha az ANSI C szabványt követi, akkor az érték nem nulla egész szám
__TIME__ Az aktuális dátumot tartalmazó karakterlánc.

3. példa: Az aktuális idő lekérése a __TIME__ használatával

A következő program __TIME__makróval adja ki az aktuális időt .

 #include int main() ( printf("Current time: %s",__TIME__); )

Kimenet

 Jelenlegi idő: 19:54:39

Ajánlott olvasmányok

  • Vonalvezérlés
  • Prágák
  • Előprocesszor kimenete
  • Egyéb irányelvek

érdekes cikkek...