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 #include
előfeldolgozó fejlécfájlok C programokba történő felvételére szolgál. Például,
#include
Itt stdio.h
van egy fejlécfájl. Az #include
előfeldolgozó irányelv a fenti sort helyettesíti a stdio.h
fejlé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 #define
elő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 if
kimutatá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 #elseif
irá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 #else
irányelv az #if
irá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… #else
haszná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