Úvod k smerniciam o predbežnom spracovaní v C

Najčastejšie sa považuje za mylnú predstavu, že predprocesory alebo makra sú súčasťou kompilácie programu, ale je to úplne nesprávne. Smernice pre procesory sú typ makier a fáza pred kompiláciou. Dá sa povedať, že toto je niekoľko pokynov vydaných kompilátoru na vykonanie skutočnej kompilácie. Sú známe aj ako dlhšie zostrojené skratky pre makrá, čo znamená, že hodnota v makrách sa nahradí segmentom kódov. Makro je definované špeciálnym symbolom a má symbol začínajúci znakom „#“. Preto tieto # define je akýsi špeciálny preprocesor nasledovaný skutočným kompilátorom. V tejto téme sa dozvieme o smerniciach o predprocesoroch v časti C.

Preprocesor má pre svoju identifikáciu špeciálny typ znázornenia, akoby sa každá smernica o preprocesore iniciovala špeciálnym symbolom „#“, za ktorým nasleduje identifikátor a potom názov smernice. Prázdne miesto je tiež povolené pred a za #. Napríklad: # include.

Existujú určité doplnky alebo vybavenie, ktoré môže poskytnúť predprocesor C:

  • Súbory hlavičiek : Zahrnutie súborov hlavičiek je spôsob, ktorým sa môžu deklarácie nahradiť syntaxou programu a telom programu.
  • Rozšírenie makra: Definovanie makier je ako skrátenie časti kódu, ktorý preprocesor C nahradí makrá ich príslušnou definíciou v celom texte.
  • Zostavovanie podľa podmienok: Podľa rôznych scenárov alebo rôznych podmienok je možné začlenenie určitých častí programu podmieneným zostavením.
  • Riadenie linky: Ak používate program na kombináciu alebo preskupenie niekoho alebo viacerých zdrojových súborov do stredného súboru na kompiláciu, môžete použiť kontrolu linky na informovanie kompilátora o tom, odkiaľ zdrojový riadok pochádza.

Druhy smerníc o predbežnom spracovaní

Všetky typy smerníc o predprocesoroch sú tieto:

  1. # define
  2. # include
  3. # ifdef
  4. # undef
  5. #ifndef
  6. # ak
  7. #else
  8. #elif
  9. #koniec Ak
  10. #chyba
  11. #pragma

1. #define (Makrá)

Makro je útržok kódu, ktorý je nahradený nejakou hodnotou kódu makra. Každé makro je väčšinou popísané a definované v #define direktíve.

syntaxe:

#define token value

Existujú dva typy makier:

  • Funkčné makrá
  • Makrá podobné objektom
Funkčné makrá

Funkcia like-macro funguje takmer ako volanie funkcie.

Napríklad:

#define MAX(a, b) ((a)>(b) ? (a): (b))

MAX je názov makra.

Príklad:

Výkon:

Makrá podobné objektom

Objektové makrá sú typom identifikátora nahradeného hodnotou. Väčšinou sa používa na vyjadrenie číselných konštánt.

#define PI 3.1415

Tu bude hodnota PI nahradená makrom.


Výkon:

2. #include

Pre direktívu zahrňujúcu preprocesor existujú aj ďalšie funkcie. Má svoje tri varianty, ktoré nahrádzajú kód aktuálnym kódom zdrojových súborov.

Tri varianty sú nasledujúce:

  • #include
  • #include "file"
  • Zahrňte čokoľvek iné

#include

Vyhľadá súbor v definovanom zozname systému alebo adresárov podľa zadania a potom vyhľadá štandardný zoznam systémových knižníc.

#include "file"

Tento typ sa používa pre vaše vlastné prispôsobené súbory záhlavia programu. Vyhľadá sa súbor s názvom súboru najskôr v aktuálnom adresári, po ktorom nasledujú súbory záhlavia systému a aktuálne adresáre aktuálneho súboru v adresári.

# zahrni čokoľvek

Tento typ smernice o zahrnutí preprocesora sa používa, keď žiadny z ostatných dvoch typov smernice a jej argumenty sa nehodia a nespĺňajú výpočtovú štruktúru.

3. #Ifdef

Skontroluje, či je makro definované pomocou # define alebo nie. Ak áno, vykoná kód, inak nebude.

syntaxe:

#ifdef MACRO
(
Code body
)
#endif
#undef:

Zrušenie definície makra znamená, že nie je definované a predchádza mu smernica #undef.

syntaxe:

#undef token

Výkon:

4. Ifndef

Tento procesor skontroluje, či je #define definovaný alebo nie pomocou #define. Ak áno, vykoná kód.

syntaxe:

#Ifndef MACRO
//code
#endif
#If

Tento procesor funguje iba ako cyklus if, vyhodnocuje výraz alebo stav. Ak je podmienka true, vykoná kód, inak nie.

syntaxe:

#if expression
//code
#endif
#else

Smernica #else preprocesor sa používa na vyhodnotenie výrazu alebo podmienky, ak je podmienka #if nesprávna. Môže byť použitý s direktívami #if, #elif, #ifdef a #ifndef.

syntaxe:

#if expression
//if body
#else
//else body
#endif

Príklad:

Výkon:

5. # Chyba

Ako už názov napovedá, na indikáciu chyby sa používa smernica Preprocesor chýb a potom kompilátor vydá závažnú chybu, ak sa nájde chyba a preskočí ďalšie kroky kompilácie.

Výkon:

6. #pragma

Závisí to od kompilátora, pretože rôzne operačné systémy a rôzne počítače poskytujú všetky typy funkcií operačného systému, ktoré kompilátor používa na ponúknutie ďalších informácií kompilátoru.

syntaxe:

#pragma token

Príklad:

Výkon:

Každý predprocesor má svoj vlastný význam, pretože podmienená smernica sa používa na kontrolu, či sa má časť programu zohľadniť na základe scenárov alebo nie.

Predpokladajme, že program sa chce skompilovať v určenom prostredí so špecifickou konfiguráciou operačného systému, ale akonáhle prejde na túto fázu kompilácie, vyvolá chybu alebo môže dať neplatný kód len tým, že poskytne svojmu programu možnosť veľké na prepojenie programu a jeho spustenie počas vykonávania. Môže existovať aj iná možnosť, keď ten istý zdrojový súbor s dvoma rôznymi programami môže vykonať časovo náročnú kontrolu konzistencie alebo jej okamžité údaje alebo vytlačiť hodnoty údajov s ladením.

Tieto scenáre, ktoré sa majú vytvoriť výpočtom, sa dajú tiež použiť na spustenie na jednom počítači pomocou direktív pre predspracovanie.

záver

Výstup z predprocesora C vyzerá podobne ako vstup, okrem toho, že všetky smernice o predbežnom spracovaní boli nahradené prázdnymi riadkami alebo medzerami. Rôzne súbory a formáty majú rôzne syntaxe, ktoré hovoria, že začiatok nového súboru bol vykonaný, alebo naznačujú návrat do súboru alebo spracovanie by sa malo vykonať pred kompiláciou.

Všetky scenáre sa používajú na informovanie ostatných o sile preprocesora C a jeho vývoji s rôznymi verziami kompilátora, ktoré začali so štandardmi GCC a ANSI.

Odporúčané články

Toto je príručka k smerniciam o predbežnom spracovaní v časti C. Tu diskutujeme typy smerníc o predbežných procesoch so syntaxou a príkladmi. Môžete sa tiež pozrieť na nasledujúce články, kde sa dozviete viac -

  1. Reverzné číslo v C
  2. Triedenie v C.
  3. Hašovacia funkcia v C
  4. Pokračovať vo vyhlásení v C
  5. Triedenie v C #
  6. Ako funguje hashovacia funkcia v PHP?

Kategórie: