C-Programmierung

Makro in C-Sprache

Makro in C-Sprache
Ein Makro in der Sprache C ist ein Stück Code, dem ein Name zugewiesen wurde. Wenn der Name irgendwo im Programm verwendet wird, wird der Makrowert vor der Kompilierung des Programms ersetzt. In diesem Artikel werden wir im Detail sehen, wie man ein Makro in der Sprache C schreibt write.

Betrachten Sie den folgenden Code:

START
INTEGER n=5;
PRINT("Wert von n ist %d",n);
ENDE

Der obige Code ist kein gültiger C-Code.

Aber der folgende Code ist gültig:

//Beispiel 1.c
#define START int main()
#define ENDE
#define INTEGER int
#define PRINT(A,B) printf(A,B)
START
INTEGER n=5;
PRINT("Wert von n ist %d",n);
ENDE

Vor der Kompilierung wurden die Makros START, INTEGER, PRINT und END durch ihren Wert ersetzt und der Code wird ein gültiger C-Code. Wir können mit dem folgenden Befehl überprüfen:

gcc -E Beispiel1.c

Dieser Befehl wird angezeigt, nachdem alle Makros erweitert wurden.

Jetzt werden wir verschiedene Arten von Makros sehen:

1. Objektähnliche Makros:

Syntax:

#define Makroname Makrowert

Wenn das Makro mehr als eine Zeile benötigt, können wir es wie folgt machen:

#define Makroname Makrowert1 \
Makrowert2 \
macro_value3
#define MAX 200

Dieses Makro sieht aus wie ein Datenobjekt, deshalb wird diese Art von Makro als objektähnliches Makro bezeichnet.

//Beispiel2.c
//#einschließen
#define MAX 200
int main()

printf("MAX-Wert ist: %d",MAX);
0 zurückgeben;

Im Beispiel2.c, MAX ist ein Makro. Aus der Ausgabe beobachten wir, dass MAX wird durch seinen Wert ersetzt 200.

2. Funktionsähnliche Makros:

Syntax:

#define macro_name() macro_value

Makroname ist ein benutzerdefinierter Name des Makros. Ein Paar Klammern muss nach dem put gesetzt werden Makroname. Dazwischen ist kein Leerzeichen erlaubt Makroname und Klammern. Wir können auch Argumente in dieser Art von Makros übergeben.

#define add(x,y) x+y

Dieses Makro sieht aus wie ein Funktionsaufruf, deshalb wird diese Art von Makro als funktionsähnliches Makro bezeichnet.

//Beispiel3.c
#define add(x,y) x+y
int main()

int a;
Schwimmer b;
a = addiere (4,5);
b = addieren(2.5,3.6)
0 zurückgeben;

In Beispiel3.c, Wir haben gesehen, dass das Makro im Gegensatz zur C-Funktion nur den Code durch Argumente ersetzt, ohne ihn zu berechnen. So können wir mit demselben Makro unterschiedliche Datentypen übergeben.

Wenn wir zwischen dem Makronamen und der Klammer ein Leerzeichen einfügen, funktioniert es genauso wie ein objektartiges Makro. Das folgende C-Beispiel veranschaulicht dies.

//Beispiel4.c
#define hinzufügen (x,y) x+y
int main()

int a;
Schwimmer b;
a = addiere (4,5);
b = addieren(2.5,3.6)

In Beispiel4.c haben wir gesehen, dass das Makro add ersetzt wird durch (x,y) x+y . Wie ein objektähnliches Makro.

3. Makro zum Einfügen von Token:
In der Sprache C wird der Operator ## zum Einfügen von Token verwendet. Mit diesem Operator können wir zwei gültige Token zu einem gültigen Token kombinieren.
Beispiel:

//Beispiel5.c
#define MARGE(x,y) x##y
int main()

int num = MARGE(52,34);
0 zurückgeben;

Wenn wir versuchen, Token einzufügen, die kein gültiges Token generieren, gibt der C-Compiler einen Fehler oder eine Warnung aus.

//Beispiel6.c
#define MARGE(x,y) x##y
int main()

int num = MARGE(52,+);
0 zurückgeben;

Im Beispiel6.c, wir haben eine Fehlermeldung, weil wir nach einer Kombination von zwei Token ein ungültiges Token '52+' erhalten.

4. Makro zum Besaiten:
In der Sprache C wird der Operator # verwendet, um einen Makroparameter in eine Zeichenfolgenkonstante umzuwandeln. Wenn einem #-Operator ein Makroparameter vorangestellt ist, wird der Parameter in ein Zeichenfolgenliteral konvertiert. Stringizing kann für objekt- und funktionsähnliche Makros verwendet werden.
Beispiel:

//Beispiel7.c
#define STRINGIZING(x) #x
int main()

printf(STRINGIZING(Hallo Welt));
0 zurückgeben;

Im Beispiel7.c Wir haben eine Zeichenfolge „Hello World“ mit dem STRINGIZING-Makro.

Fazit:

Dieser Artikel hat über alle Arten von Makros gelernt Objektähnliche Makros, Funktionsähnliche Makros, Makro zum Einfügen von Token, Makro zum Stringisieren und Makro zum Stringisieren in C-Sprache. Jetzt können wir ohne Zweifel ein Makro in unserem C-Programm verwenden.

Top 5 Karten zur Spielaufnahme
Wir alle haben Streaming-Gameplays auf YouTube gesehen und geliebt. PewDiePie, Jakesepticye und Markiplier sind nur einige der Top-Gamer, die Millione...
So entwickeln Sie ein Spiel unter Linux
Vor einem Jahrzehnt hätten nicht viele Linux-Benutzer vorhergesagt, dass ihr Lieblingsbetriebssystem eines Tages eine beliebte Spieleplattform für kom...
Open-Source-Ports kommerzieller Spiele-Engines
Kostenlose, quelloffene und plattformübergreifende Spiel-Engine-Nachbildungen können verwendet werden, um sowohl alte als auch einige der relativ neue...