C Programování

Makro v jazyce C

Makro v jazyce C
Makro v jazyce C je část kódu, kterému byl přidělen název. Pokud se název používá kdekoli v programu, hodnota makra se před kompilací programu nahradí. V tomto článku uvidíme podrobně, jak napsat makro v jazyce C.

Zvažte následující kód:

START
INTEGER n = 5;
PRINT ("Hodnota n je% d", n);
KONEC

Výše uvedený kód není platný kód C.

Ale následující kód je platný:

// Příklad 1.C
#define START int main ()
#define END
#define INTEGER int
#define PRINT (A, B) printf (A, B)
START
INTEGER n = 5;
PRINT ("Hodnota n je% d", n);
KONEC

Před kompilací bylo makro START, INTEGER, PRINT a END nahrazeno jejich hodnotou a kód se stal platným C kódem. Můžeme to zkontrolovat pomocí následujícího příkazu:

gcc -E Příklad 1.C

Tento příkaz se zobrazí po rozbalení všech maker.

Nyní uvidíme různé typy maker:

1. Makra podobná objektům:

Syntax:

#define macro_name macro_value

Pokud makro zabírá více než jeden řádek, můžeme to udělat následovně:

# definovat název makra hodnota_makra1 \
makro_hodnota2 \
makro_hodnota3
# definovat MAX 200

Toto makro vypadá jako datový objekt, proto se tento typ makra nazývá jako objektové makro.

// Příklad 2.C
//#zahrnout
# definovat MAX 200
int main ()

printf ("MAX hodnota je:% d", MAX);
návrat 0;

v Exapmle2.c, MAX je makro. Z výstupu to pozorujeme MAX je nahrazen jeho hodnotou 200.

2. Makra podobná funkcím:

Syntax:

#define název_makra () hodnota_makra

název_makra je uživatelem definované jméno makra. Dvojice závorek musí být vložena za název_makra. Mezi nimi není povolen žádný prostor název_makra a závorky. Můžeme také předat argumenty v tomto typu maker.

#define add (x, y) x + y

Toto makro vypadá jako volání funkce, proto se tento typ makra nazývá funkční makro.

// Příklad 3.C
#define add (x, y) x + y
int main ()

int a;
float b;
a = přidat (4,5);
b = přidat (2.5,3.6)
návrat 0;

V příkladu 3.C, viděli jsme, že na rozdíl od funkce C makro nahradí pouze kód argumenty bez jeho výpočtu. Můžeme tedy předat různé datové typy pomocí stejného makra.

Pokud vložíme mezeru mezi název makra a závorku, funguje to stejně jako objektové makro. Níže to ukazuje C příklad.

// Příklad4.C
#define add (x, y) x + y
int main ()

int a;
float b;
a = přidat (4,5);
b = přidat (2.5,3.6)

V příkladu 4.c, viděli jsme, že přidání makra je nahrazeno (x, y) x + y . Stejné jako objektové makro.

3. Makro pro vkládání tokenů:
V jazyce C se pro vkládání tokenů používá operátor ##. Pomocí tohoto operátoru můžeme kombinovat dva platné tokeny do jednoho platného tokenu.
Příklad:

// Příklad 5.C
#define MARGE (x, y) x ## y
int main ()

int num = MARGE (52,34);
návrat 0;

Pokud se pokusíme vložit token, který negeneruje platný token, kompilátor C poskytne chybu nebo varování.

// Příklad 6.C
#define MARGE (x, y) x ## y
int main ()

int num = MARGE (52, +);
návrat 0;

v Příklad 6.C, máme chybovou zprávu, protože po kombinaci dvou tokenů dostaneme neplatný token '52 + '.

4. Makro pro Stringizing:
V jazyce C se operátor # používá k převodu parametru makra na řetězcovou konstantu. Když operátor # předchází parametru makra, parametr se převede na řetězcový literál. Stringizing lze použít pro objektová a funkční makra.
Příklad:

// Příklad 7.C
#define STRINGIZING (x) #x
int main ()

printf (STRINGIZING (Hello World));
návrat 0;

v Příklad 7.C pomocí řetězce STRINGIZING máme řetězec „Hello World“.

Závěr:

Tento článek se dozvěděl o všech typech podobných makrům Objektová makra, Funkčně podobná makra, Makro pro vkládání tokenů, Makro pro Stringizing a Makro pro Stringizing v jazyce C. Nyní můžeme bez jakýchkoli pochyb použít makro v našem programu C.

Emulace kliknutí myší vznášením pomocí myši Clickless Mouse ve Windows 10
Používání myši nebo klávesnice ve špatném držení těla nadměrného používání může mít za následek mnoho zdravotních problémů, včetně napětí, syndromu ka...
Přidejte gesta myši do Windows 10 pomocí těchto bezplatných nástrojů
V posledních letech se počítače a operační systémy značně vyvinuly. Bývaly doby, kdy uživatelé museli procházet správci souborů pomocí příkazů. Stejně...
Ovládejte a spravujte pohyb myši mezi více monitory ve Windows 10
Správce myší se dvěma displeji umožňuje ovládat a konfigurovat pohyb myši mezi více monitory zpomalením jeho pohybů poblíž hranice. Windows 10/8 vám u...