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ő:

  1. # definiálja
  2. # tartalmazza
  3. # ifdef
  4. # undef
  5. #ifndef
  6. # ha
  7. #más
  8. #elif
  9. #endif
  10. #hiba
  11. #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-

  1. Fordított szám C-ben
  2. Rendezés C-ben
  3. Hash funkció C-ben
  4. Folytassa a nyilatkozatot a C
  5. Rendezés C # -ben
  6. Hogyan működik a hash funkció a php-ben?

Kategória: