Unterschied zwischen Inline und Makro in C ++
Inhalt
Makro ist eine Anweisung, die zum Zeitpunkt ihres Aufrufs erweitert wird. Es können auch Funktionen wie Makros definiert werden. In ähnlicher Weise werden die Inline-Funktionen auch zum Zeitpunkt ihres Aufrufs erweitert. Ein Hauptunterschied zwischen Inline- und Makrofunktion besteht darin, dass Inline-Funktionen werden während erweitert Zusammenstellung, und das Makros werden erweitert, wenn das Programm von der verarbeitet wird Präprozessor.
Lassen Sie uns den Unterschied zwischen Inline und Makro mit Hilfe der Vergleichstabelle untersuchen.
- Vergleichstabelle
- Definition
- Hauptunterschiede
- Fazit
Vergleichstabelle
Grundlage für den Vergleich | In der Reihe | Makro |
---|---|---|
Basic | Inline-Funktionen werden vom Compiler analysiert. | Makros werden vom Präprozessor erweitert. |
Syntax | Inline-Rückgabetyp Funktionsname (Parameter) {. . . } | #define macro_name char_sequence |
Verwendete Schlüsselwörter | in der Reihe | #definieren |
Definiert | Es kann innerhalb oder außerhalb der Klasse definiert werden. | Sie wird immer zu Beginn des Programms definiert. |
Auswertung | Das Argument wird nur einmal ausgewertet. | Es wertet das Argument jedes Mal aus, wenn es im Code verwendet wird. |
Erweiterung | Der Compiler integriert und erweitert möglicherweise nicht alle Funktionen. | Makros werden immer erweitert. |
Automatisierung | Die in der Klasse definierten Kurzfunktionen werden automatisch in Inline-Funktionen umgewandelt. | Makros sollten speziell definiert werden. |
Zugreifen | Eine Inline-Member-Funktion kann auf die Datenmember der Klasse zugreifen. | Makros können niemals die Mitglieder der Klasse sein und können nicht auf die Datenmitglieder der Klasse zugreifen. |
Beendigung | Die Definition der Inline-Funktion endet mit den geschweiften Klammern am Ende der Inline-Funktion. | Die Definition des Makros endet mit der neuen Zeile. |
Debuggen | Das Debuggen ist für eine Inline-Funktion einfach, da die Fehlerprüfung während der Kompilierung durchgeführt wird. | Das Debuggen wird für Makros schwierig, da während der Kompilierung keine Fehlerprüfung stattfindet. |
Bindung | Eine Inline-Funktion bindet alle Anweisungen im Hauptteil der Funktion sehr gut und der Hauptteil der Funktion beginnt und endet mit den geschweiften Klammern. | Ein Makro hat das Bindungsproblem, wenn es mehr als eine Anweisung hat, da es kein Beendigungssymbol hat. |
Definition von Inline
Eine Inline-Funktion sieht aus wie eine normale Funktion, aber vor dem Schlüsselwort „in der Reihe“. Inline-Funktionen sind Funktionen mit kurzer Länge, die beim Aufruf erweitert werden, anstatt aufgerufen zu werden. Lassen Sie uns die Inline-Funktionen anhand eines Beispiels verstehen.
#umfassen Im obigen Programm habe ich die Funktion initialize () als Inline-Funktion in der Klasse "example" deklariert und definiert. Der Code der Funktion initialization () wird dort erweitert, wo er vom Objekt der Klasse "example" aufgerufen wird. Die im Klassenbeispiel definierte Funktion display () wird nicht als inline deklariert, kann aber vom Compiler als inline betrachtet werden In C ++ werden die innerhalb der Klasse definierten Funktionen vom Compiler automatisch inline gesetzt, wobei die Länge der Funktion berücksichtigt wird. Macro ist eine "Präprozessor-Direktive". Vor dem Kompilieren wird das Programm vom Präprozessor überprüft und ersetzt das Makro durch seine Definition, wo immer es das Makro im Programm findet. Daher wird das Makro als "Ersatz" betrachtet. Betrachten wir das Makro anhand eines Beispiels. #umfassen Im obigen Code habe ich eine Makrofunktion GREATER () deklariert, die die größere Anzahl beider Parameter vergleicht und findet. Sie können beobachten, dass es kein Semikolon zum Beenden des Makros gibt, da das Makro nur durch die neue Zeile beendet wird. Da ein Makro nur ein Ersatz ist, wird der Code des Makros, in dem es aufgerufen wird, erweitert. Die Inline-Funktionen sind weitaus überzeugender als die Makrofunktion. C ++ bietet auch eine bessere Möglichkeit, eine Konstante zu definieren, die ein Schlüsselwort "const" verwendet.
Definition von Makro
Schlussfolgerungen: