Heim > Backend-Entwicklung > C++ > Der Unterschied zwischen Makros und Funktionen in C

Der Unterschied zwischen Makros und Funktionen in C

王林
Freigeben: 2023-08-30 23:49:06
nach vorne
1055 Leute haben es durchsucht

Der Unterschied zwischen Makros und Funktionen in C

In diesem Abschnitt werden wir den Unterschied zwischen Makros und Funktionen in der C-Sprache sehen. Makros werden vorverarbeitet, was bedeutet, dass alle Makros zur Kompilierzeit vorverarbeitet werden. Funktionen werden nicht vorverarbeitet, sondern kompiliert.

In Makros wird keine Typprüfung durchgeführt, daher können Probleme mit unterschiedlichen Eingabetypen auftreten. Bei Funktionen passiert das nicht. Darüber hinaus kann es zu ungültigen Ergebnissen kommen, wenn die Eingabe des Makros nicht korrekt verwaltet wird. Bei Fragen lesen Sie sich bitte das folgende Verfahren durch.

Beispiel

#include <stdio.h>
#define SQUARE(x) x * x
int sqr(int x) {
   return x*x;
}
main() {
   printf("Use of sqr(). The value of sqr(3+2): %d</p><p>", sqr(3+2));
   printf("Use of SQUARE(). The value of SQUARE(3+2): %d", SQUARE(3+2));
}
Nach dem Login kopieren

Ausgabe von

Use of sqr(). The value of sqr(3+2): 25
Use of SQUARE(). The value of SQUARE(3+2): 11
Nach dem Login kopieren

Funktion und Makro, wir möchten, dass beide die gleiche Aufgabe ausführen, aber hier können wir sehen, dass die Ausgabeergebnisse unterschiedlich sind. Der Hauptgrund ist, dass, wenn wir 3 + 2 als Funktionsparameter übergeben, dieser in 5 umgewandelt wird und dann 5 * 5 = 25 berechnet wird. Für das Makro wird 3 + 2 * 3 + 2 = 3 + 6 + 2 = 11 ausgeführt.

Daher werden Makros für die folgenden Probleme nicht empfohlen:

  • Keine Typprüfung

  • Standardmäßig der Debug-Modus, da Makros lediglich Ersetzungen sind

  • Makros haben keinen Namensraum. Wenn also ein Makro in einem Abschnitt definiert ist, kann es in einem anderen Abschnitt verwendet werden.

  • Das Makro erhöht die Codelänge, da es vor der Vorverarbeitung hinzugefügt wird.

  • Makros prüfen nicht auf Fehler bei der Kompilierung.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Makros und Funktionen in C. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage