Was ist der Unterschied zwischen einem Makro und einer Funktion inC? Bitte sagen Sie mir eine Anwendung, in der ich Makros und Funktionen verwenden kann.
Vorteile
Nachteile
Der grundlegende Unterschied besteht darin, dass die Funktion kompiliert und das Makro vorverarbeitet wird. Wenn Sie einen Funktionsaufruf verwenden, wird er mit all diesen Stack-Operationen in ASM CALL übersetzt, um Parameter zu übergeben und Werte zurückzugeben. Wenn Sie einen MACRO verwenden, übersetzt der C-Präprozessor alle Zeichenfolgen mit Makro und dann mit Compile.
Die Verwendung von Makros hat den Nachteil, dass sie die Implementierung ausblenden. Es ist schwieriger, einen Fehler zu finden, wenn er einen hat.
In C (und C++) ist ein Makro eine Präprozessoranweisung. Das heißt, bevor Ihr Programm mit dem Kompilieren beginnt, werden alle Ihre Makros durchlaufen und verarbeitet. Makros sind nützlich, weil
Enttäuschungen
Beispiel
#define INCREMENT(x) x++
Eine Funktion ist ein Code, der relativ unabhängig ausgeführt werden kann und eine bestimmte Aufgabe ausführt. Sie können sich so etwas wie eine mathematische Funktion vorstellen: Eine Funktion, die eine Menge von Eingaben enthält, liefert eine bestimmte Ausgabe. In C sind diese als definiert
<return type> <name>(<parameters>)
{
//code body
}
Ein weiterer Unterschied besteht darin, dass es in der Funktion Stack-Overhead gibt, bei Makros jedoch keinen Stack-Overhead. Es ist nur die Erweiterung des Codes.
Sie müssen das Makro nur als Textersetzung betrachten: Es ist, als würden Sie den Makrocode jedes Mal einbetten, wenn Sie das Makro in Ihrem Code sehen. Dies ist gut für "Codeausschnitte", da Sie den Aufruf von Overhead-Funktionen vermeiden, da jedes Mal, wenn Sie eine Funktion aufrufen, einige Anstrengungen unternommen werden, um Parameter auf den Stack zu verschieben.