In C, a Makro ist ein Codeabschnitt in einem Programm, der durch den Wert des Makros ersetzt wird. Makro wird definiert durch #definieren Richtlinie. Immer wenn der Compiler auf einen Makronamen stößt, ersetzt er den Namen durch die Definition des Makros. Makrodefinitionen müssen nicht durch ein Semikolon abgeschlossen werden( ; ).
Beispiele für Makros in C
Nachfolgend finden Sie die Programme zur Veranschaulichung der Verwendung von Makros in C:
Beispiel 1
Das folgende Beispiel zeigt die Verwendung von Makros zur Definition von LIMIT.
C
// C program to illustrate macros> #include> // Macro definition> #define LIMIT 5> // Driver Code> int> main()> {> >// Print the value of macro defined> >printf>(>'The value of LIMIT'> >' is %d'>,> >LIMIT);> >return> 0;> }> |
>
>Ausgabe
The value of LIMIT is 5>
Beispiel 2
Das folgende Beispiel zeigt die Verwendung von Makros zum Ermitteln der Fläche eines Rechtecks.
C
// C program to illustrate macros> #include> // Macro definition> #define AREA(l, b) (l * b)> // Driver Code> int> main()> {> >// Given lengths l1 and l2> >int> l1 = 10, l2 = 5, area;> >// Find the area using macros> >area = AREA(l1, l2);> >// Print the area> >printf>(>'Area of rectangle'> >' is: %d'>,> >area);> >return> 0;> }> |
>
>Ausgabe
Area of rectangle is: 50>
Erläuterung
Aus dem obigen Programm können wir das erkennen, wann immer der Compiler es findet BEREICH(l, b) im Programm wird es durch die Makrodefinition ersetzt, d. h. (Pfund) . Die an die Makrovorlage übergebenen Werte BEREICH(l, b) wird ebenfalls durch die Aussage ersetzt (Pfund) . Daher, BEREICH(10, 5) wird gleich sein 10*5 .
Arten von Makros in C
Es gibt zwei Arten von Makros in der C-Sprache:
1. Objektähnliche Makros
Ein objektartiges Makro ist ein einfacher Bezeichner, der durch ein Codefragment ersetzt wird. Es wird objektartig genannt, weil es im Code, der es verwendet, wie ein Objekt aussieht. Es wird häufig verwendet, um einen symbolischen Namen durch eine Zahl/Variable zu ersetzen, die als Konstante dargestellt wird.
Beispiel
Das folgende Beispiel ist die Darstellung eines einfachen Makros, d. h. objektähnlicher Makros.
C
// C program to illustrate macros> #include> // Macro definition> #define DATE 31> // Driver Code> int> main()> {> >// Print the message> >printf>(>'Lockdown will be extended'> >' upto %d-MAY-2020'>,> >DATE);> >return> 0;> }> |
>
>Ausgabe
Lockdown will be extended upto 31-MAY-2020>
2. Kettenmakros
Makros innerhalb von Makros werden als Kettenmakros bezeichnet. Bei Kettenmakros wird zuerst das übergeordnete Makro erweitert, dann wird das untergeordnete Makro erweitert.
Beispiel
Das folgende Programm ist die Illustration eines Kettenmakros
C
// C program to illustrate macros> #include> > // Macro definition> #define INSTAGRAM FOLLOWERS> #define FOLLOWERS 138> > // Driver Code> int> main()> {> >// Print the message> >printf>(>'Geeks for Geeks have %dK'> >' followers on Instagram'>,> >INSTAGRAM);> > >return> 0;> }> |
>
>Ausgabe
Geeks for Geeks have 138K followers on Instagram>
Erläuterung:
INSTAGRAM wird zunächst um FOLLOWER erweitert. Anschließend wird das erweiterte Makro erweitert, um das Ergebnis 138 KB zu erzeugen. Dies wird als Verkettung von Makros bezeichnet.
3. Mehrzeilige Makros
Ein objektartiges Makro könnte mehrzeilig sein. Um ein mehrzeiliges Makro zu erstellen, müssen Sie also Backslash-Newline verwenden.
Beispiel
Unten sehen Sie die Abbildung von mehrzeiligen Makros:
C
// C program to illustrate macros> #include> // Multi-line Macro definition> #define ELE 1,> >2,> >3> // Driver Code> int> main()> {> >// Array arr[] with elements> >// defined in macros> >int> arr[] = { ELE };> >// Print elements> >printf>(>'Elements of Array are:
'>);> >for> (>int> i = 0; i <3; i++) {> >printf>(>'%d '>, arr[i]);> >}> >return> 0;> }> |
>
>Ausgabe
Elements of Array are: 1 2 3>
4. Funktionsähnliche Makros
Diese Makros entsprechen einem Funktionsaufruf. Es ersetzt den gesamten Code anstelle eines Funktionsnamens. Ein Klammerpaar unmittelbar nach dem Makronamen ist erforderlich. Wenn Wenn wir in der Makrodefinition ein Leerzeichen zwischen dem Makronamen und den Klammern einfügen, funktioniert das Makro nicht .
Ein funktionsähnliches Makro wird nur dann verlängert, wenn sein Name mit einem Klammerpaar dahinter erscheint. Wenn wir dies nicht tun, erhält der Funktionszeiger die Adresse der echten Funktion und führt zu einem Syntaxfehler.
Beispiel
Das folgende Beispiel zeigt funktionsähnliche Makros
C
c#-Beispielcode
// C program to illustrate macros> #include> // Function-like Macro definition> #define min(a, b) (((a) <(b)) ? (a) : (b))> // Driver Code> int> main()> {> >// Given two number a and b> >int> a = 18;> >int> b = 76;> >printf>(>'Minimum value between'> >' %d and %d is %d
'>,> >a, b, min(a, b));> >return> 0;> }> |
>
>Ausgabe
Minimum value between 18 and 76 is 18>
Hier ist ein Beispiel, das ein besseres Verständnis von Makros vermittelt:
Problem: Wir müssen die Fläche eines Kreises durch Definition ermitteln BEREICH(r) Makros.
C
#include> #define PI 3.1416> #define AREA(r) (PI*(r)*(r))> int> main() {> >float> r = 7;>// radius of circle> > >printf>(>'Area of Circle with radius %.0f: %.3f'>, r, AREA(r));> >return> 0;> }> // This code is contributed by Susobhan Akhuli> |
>
>Ausgabe
Area of Circle with radius 7: 153.938>
Abschluss
Makros sind kleine Codeteile, die mit einem einzigen Befehl ausgeführt werden können. Mit ihnen lassen sich Aufgaben automatisieren, komplexe Prozesse vereinfachen und die Produktivität steigern. Die Verwendung von Makros hat jedoch auch einige Nachteile. Hier sind einige der Vor- und Nachteile von Makros:
FAQs zu C-Makros
Q1. Was sind die Vorteile von Makros?
Antwort:
Erhöhte Produktivität: Makros können Zeit sparen und Fehler reduzieren, indem sie sich wiederholende Aufgaben automatisieren. Anpassung: Makros können an spezifische Anforderungen angepasst werden, was eine größere Flexibilität bei der Erledigung von Aufgaben ermöglicht. Konsistenz: Makros können dazu beitragen, die Konsistenz von Aufgaben sicherzustellen, indem sie einer Reihe vorgegebener Anweisungen folgen. Effizienz: Makros können Aufgaben schneller ausführen als Menschen und verbessern so die Gesamteffizienz. Benutzerfreundlichkeit: Makros sind einfach zu erstellen und zu verwenden und erfordern kaum oder gar keine Programmierkenntnisse
Q2. Was sind die Nachteile von Makros?
Antwort:
Sicherheitsrisiken: Makros können ein Sicherheitsrisiko darstellen, wenn sie nicht ordnungsgemäß gesichert sind oder zur Ausführung von Schadcode verwendet werden. Eingeschränkte Funktionalität: Makros sind möglicherweise nicht in der Lage, komplexere Aufgaben auszuführen, was ihren Nutzen einschränkt. Kompatibilitätsprobleme: Makros sind möglicherweise nicht mit allen Softwareanwendungen kompatibel, was ihren Nutzen einschränkt. Wartung: Makros erfordern möglicherweise Wartung und Aktualisierungen, was zeitaufwändig und kostspielig sein kann. Abhängigkeit: Eine übermäßige Abhängigkeit von Makros kann zu einer verminderten Problemlösungsfähigkeit und einem geringeren kritischen Denken führen.
Q3. Kann ein Makro Argumente annehmen?
Antwort:
Ja, Makros können Argumente annehmen. Beispielsweise ist MAX ein Makro, das zwei Argumente (a und b) akzeptiert und das Maximum der beiden zurückgibt.
Q4. Können Makros rekursiv sein?
Antwort:
Nein, Makros können nicht rekursiv sein. Wenn ein Makro rekursiv wird, bezieht sich die Definition auf sich selbst und führt während der Vorverarbeitung zu einer Endlosschleife.