Makro in C -Sprache

Makro in C -Sprache
Ein Makro in der C -Sprache ist ein Code, dem ein Name zugewiesen wurde. Wenn der Name überall im Programm verwendet wird, wird der Makrowert vor der Zusammenstellung des Programms ersetzt. In diesem Artikel werden wir ausführlich sehen, wie ein Makro in C -Sprache schreibt.

Betrachten Sie den folgenden Code:

START
Ganzzahl n = 5;
Print ("Wert von n ist %d", n);
ENDE

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

Der folgende Code ist jedoch gültig:

//Beispiel 1.C
#define start int main ()
#define Ende
#define Integer int
#Define Print (a, b) printf (a, b)
START
Ganzzahl n = 5;
Print ("Wert von n ist %d", n);
ENDE

Vor der Zusammenstellung wurde der Makrostart, die Ganzzahl, das Druck und das Ende durch ihren Wert ersetzt, und der Code wird zu einem gültigen C -Code. Wir können mit dem folgenden Befehl überprüfen:

GCC -E Beispiel1.C

Dieser Befehl zeigt nach der Erweiterung aller Makros.

Jetzt werden wir verschiedene Arten von Makros sehen:

1. Objektähnliche Makros:

Syntax:

#define macro_name macro_value
  • Makro beginnt immer mit #Define
  • macro_name ist ein benutzerdefinierter Name des Makros
  • MACRO_VALUE ist der Wert des Makros. Es mag alles sein, aber eine Linie und der Makrokörper enden mit den Enden dieser Linie. Am Ende ist Semikolon (;) nicht erforderlich. Der Raum wird auch berücksichtigt.

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

#define macro_name macro_value1 \
MACRO_VALUE2 \ \
macro_value3
#define max 200

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

// Beispiel2.C
//#enthalten
#define max 200
int main ()

printf ("maximaler Wert ist: %d", max);
Rückkehr 0;

In Exapmle2.C, Max ist ein Makro. Aus der Ausgabe beobachten wir das Max wird durch seinen Wert ersetzt 200.

2. Funktionsähnliche Makros:

Syntax:

#define macro_name () macro_value

MACRO_NAME ist ein benutzerdefinierter Name des Makros. Paar von Klammern muss nach dem vorgehen MACRO_NAME. Es ist kein Platz dazwischen erlaubt MACRO_NAME 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 bezeichnet diese Art von Makro als funktionsähnliches Makro.

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

int a;
float b;
a = add (4,5);
B = add (2.5,3.6)
Rückkehr 0;

In Beispiel3.C, Wir haben gesehen, dass das Makro im Gegensatz zu Cs Funktion nur den Code durch Argumente ersetzt, ohne ihn zu berechnen. So können wir mit demselben Makro einen anderen Datentyp übergeben.

Wenn wir einen Platz zwischen dem Makroamen und der Klammern einlegen, funktioniert er genauso wie ein objektartiges Makro. Im Folgenden c zeigt das Beispiel dies veranschaulicht dies.

// Beispiel4.C
#define add (x, y) x+y
int main ()

int a;
float b;
a = add (4,5);
B = add (2.5,3.6)

In Beispiel4.c, wir haben gesehen, dass das Makro -Add durch (x, y) x+y ersetzt wird . Gleich wie ein objektähnliches Makro.

3. Makro für Token -Einfügen:
In der C -Sprache wird ## Operator zum Token -Einfügen verwendet. Mit diesem Bediener 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);
Rückkehr 0;

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

// Beispiel6.C
#define Marge (x, y) x ## y
int main ()

int num = marge (52,+);
Rückkehr 0;

In Beispiel6.C, Wir haben eine Fehlermeldung, weil wir nach einer Kombination von zwei Token einen ungültigen Token '52+'erhalten.

4. Makro zum Stringwerk:
In der C -Sprache wird der # Operator verwendet, um einen Makroparameter in eine String -Konstante zu konvertieren. Wenn ein # Operator mit einem Makroparameter vorausgeht, wandelt sich der Parameter in ein String -Literal um. Das Stringing kann für objektähnliche und funktionsähnliche Makros verwendet werden.
Beispiel:

// Beispiel7.C
#define String (x) #x
int main ()

printf (String (Hallo Welt));
Rückkehr 0;

In Beispiel7.C Wir haben eine Zeichenfolge „Hallo Welt“ mit dem String -Makro.

Abschluss:

Dieser Artikel hat alle Arten von Makro-ähnlich erfahren Objektähnliche Makros, Funktionsähnliche Makros, Makro für Token -Einfügen, Makro zum String und Makro zum Stringwerk In C -Sprache. Jetzt können wir ohne Zweifel ein Makro in unserem C -Programm verwenden.