Bevezetés az előfeldolgozó irányelveire C
Leggyakrabban tévhitként fogalmazzák meg, hogy az előprocesszorok vagy makrók a program összeállításának részei, de ez teljesen téves. Az előfeldolgozó irányelvek a makrók típusa és a fordítás előtti fázis. Elmondható, hogy ezek néhány utasításkészlet, amelyet a fordítónak adtak a tényleges fordítás végrehajtásához. A makrók hosszabb konstrukciós rövidítéseként is ismertek, ami azt jelenti, hogy a makrókban szereplő értéket kicserélik a kódok szegmensére. A makrót egy speciális szimbólum határozza meg, és egy „#” betűvel kezdődő szimbólummal rendelkezik. Ezért ezek a # define egyfajta speciális előfeldolgozó, amelyet az aktuális fordító követ. Ebben a témában megismerjük a C feldolgozás előtti irányelveit.
Az előfeldolgozónak speciális ábrázolása van az azonosításához, mivel az összes előfeldolgozó irányelv egy speciális „#” szimbólummal indítja el magát, amelyet egy azonosító, majd az irányelv neve követ. A szóköz használata a # előtt és után is megengedett. Például a # include.
Vannak bizonyos felszerelések vagy létesítmények, amelyeket a C előfeldolgozó képes biztosítani:
- Fejlécfájlok: A fejlécet tartalmazó fájlok beillesztésével a deklarációk helyettesíthetők a program szintaxisával és a program törzsével.
- Makró kibővítése: A makrók meghatározása olyan, mint egy olyan kódrészlet rövidítése, amelyet egy C előfeldolgozó helyettesít a makrókkal a megfelelő makrókon.
- Összeállítás körülmények szerint: Különböző forgatókönyvek vagy feltételek szerint a program egyes részeinek feltételes összeállítással történő beillesztése lehetséges.
- Vonalvezérlés: Ha valamelyik vagy több forrásfájlt kombinál vagy átrendez egy köztes fájlba fordítás céljából egy programmal, akkor a vonalvezérlés segítségével értesítheti a fordítót, ahonnan az egyes forrássorok származnak.
Az előfeldolgozói irányelvek típusai
Az előfeldolgozói irányelvek minden típusa a következő:
- # definiálja
- # tartalmazza
- # ifdef
- # undef
- #ifndef
- # ha
- #más
- #elif
- #endif
- #hiba
- #pragma
1. #define (makrók)
A makró egy kódrészlet, amelyet a makró kódjának bizonyos értéke helyettesít. Bármely makrót leginkább a #define irányelv írja le és határozza meg.
Szintaxis:
#define token value
Kétféle makró létezik:
- Funkció - mint a makrók
- Objektumszerű makrók
Funkció - mint a makrók
A függvény-makró szinte úgy működik, mint egy függvényhívás.
Például:
#define MAX(a, b) ((a)>(b) ? (a): (b))
A MAX itt a makró név.
Példa:
Kimenet:
Objektumszerű makrók
Az objektumszerű makrók az azonosító típusát értékkel helyettesítik. Leginkább numerikus állandók ábrázolására használják.
#define PI 3.1415
Itt a PI értéke helyébe a makró lép.
Kimenet:
2. # belefoglalni
Van néhány egyéb funkció is az előfeldolgozó-irányelv számára. Megvan a három változata, amelyek helyettesítik a kódot a jelenlegi forrásfájl-kóddal.
Három változat a következő:
- #include
- #include”file”
- Tartalmazzon bármi mást
#include
A megadott rendszer vagy könyvtárak meghatározott listáján található fájlokat keres, majd a rendszerkönyvtárak általános listáját keresi.
#include”file”
Ezt a típust a program saját testreszabott fejlécfájljaihoz használják. Először megkeresik a fájl nevű fájlt az aktuális könyvtárban, majd a rendszer fejléc fájljait és az aktuális könyvtár aktuális könyvtárait.
# magába foglal bármit
Az ilyen típusú előfeldolgozói irányelvet akkor alkalmazzák, amikor az irányelv többi fennmaradó két típusa sem tartozik, és érvei nem felelnek meg és nem felelnek meg a számítási struktúrának.
3. #Ifdef
Ellenőrzi, hogy a makrót # definiálja-e vagy sem. Ha igen, akkor végrehajtja a kódot, különben nem.
Szintaxis:
#ifdef MACRO
(
Code body
)
#endif
#undef:
A makró definíciójának törlése azt jelenti, hogy nincs meghatározva, és azt #undef irányelv előzi meg.
Szintaxis:
#undef token
Kimenet:
4. Ifndef
Ez a processzor ellenőrzi, hogy a #define a #define meghatározta-e vagy sem. Ha igen, akkor végrehajtja a kódot.
Szintaxis:
#Ifndef MACRO
//code
#endif
#If
Ez a processzor úgy működik, mintha csak hurok lenne, kiértékeli a kifejezést vagy a feltételt. Ha az állapot igaz, akkor a kódot végrehajtja, egyébként nem.
Szintaxis:
#if expression
//code
#endif
#else
A #else preprocessor irányelvet használjuk a kifejezés vagy állapot kiértékelésére, ha a #if állapota hamis. Használható #if, #elif, #ifdef és #ifndef irányelvekkel.
Szintaxis:
#if expression
//if body
#else
//else body
#endif
Példa:
Kimenet:
5. # Hiba
Amint a neve is sugallja, a Hiba előfeldolgozó irányelv a hiba jelzésére szolgál, majd a fordító végzetes hibát ad, ha hibadirektívát talál, és kihagyja a következő fordítási lépéseket.
Kimenet:
6. #pragma
A fordítótól függ, mivel a különböző operációs rendszerek és a különféle gépek biztosítják az operációs rendszer minden típusát, amelyet a fordító használ, hogy kiegészítő információkat nyújtson a fordítónak.
Szintaxis:
#pragma token
Példa:
Kimenet:
Minden előfeldolgozónak megvan a maga jelentősége, mivel a feltételes irányelvet használják annak ellenőrzésére, hogy a program egy részét forgatókönyvek alapján kell-e figyelembe venni.
Tegyük fel, hogy egy program össze akarja fordítani egy meghatározott környezetben az operációs rendszer adott konfigurációjával, de amint a fordítás e szakaszára megy, hibát dob, vagy érvénytelen kódot adhat, csupán programjának adva a nagy nem a program összekapcsolásához és futtatásához végrehajtás közben. Lehetséges még egy lehetőség, ha ugyanaz a két különböző programmal rendelkező forrásfájl időigényes konzisztencia-ellenőrzést vagy azonnali adatait elvégezheti, vagy az adatok értékét hibakereséssel kinyomtathatja.
Emellett a számításokkal létrehozandó forgatókönyvek felhasználhatók egy gépen történő futtatásra az előfeldolgozási irányelvek használatával.
Következtetés
A C előfeldolgozó kimenete nagyjából úgy néz ki, mint a bemenet, azzal a különbséggel, hogy az összes előfeldolgozási irányelvet üres sorokkal vagy szóközökkel helyettesítették. A különféle fájlok és formátumok eltérő szintaxissal rendelkeznek, mondván, hogy egy új fájl elindult, vagy azt jelzik, hogy a fájlba visszatérés vagy a feldolgozás megtörténik.
Az összes forgatókönyvet arra használják, hogy mások megismerjék a C előprocesszor erejét és annak fejlődését a GCC és ANSI szabványokkal indított fordító különféle verzióival.
Ajánlott cikkek
Ez az útmutató az előfeldolgozói irányelvekhez a C. szakaszban. Itt tárgyaljuk az előfeldolgozói irányelvek típusait szintaxissal és példákkal. Lehet, hogy megnézi a következő cikkeket is, ha többet szeretne megtudni-
- Fordított szám C-ben
- Rendezés C-ben
- Hash funkció C-ben
- Folytassa a nyilatkozatot a C
- Rendezés C # -ben
- Hogyan működik a hash funkció a php-ben?