Makrodefinition ist eine häufig verwendete Vorverarbeitungsanweisung, die „Bezeichner“ verwendet, um den Inhalt in der „Ersetzungsliste“ darzustellen. Der Bezeichner wird als Makroname bezeichnet. Während des Vorverarbeitungsprozesses ersetzt der Präprozessor alle Makronamen im Quellprogramm durch den Inhalt der Ersetzungsliste in der Makrodefinition.
Es gibt zwei gängige Makrodefinitionen: Makrodefinitionen ohne Parameter und Makrodefinitionen mit Parametern.
Makrodefinitionen können uns helfen, Fehler zu vermeiden, die Portabilität und Lesbarkeit des Codes zu verbessern usw.
Im Softwareentwicklungsprozess gibt es häufig einige häufig verwendete oder gemeinsame Funktionen oder Codesegmente. Diese Funktionen können als Funktionen geschrieben oder in Makrodefinitionen gekapselt werden. Ist es also besser, Funktionen oder Makrodefinitionen zu verwenden? Dies erfordert, dass wir eine vernünftige Wahl zwischen beiden treffen.
Schauen wir uns ein Beispiel an, um zwei Zahlen oder Ausdrücke zu vergleichen. Zuerst schreiben wir es als Makrodefinition:
#define MAX( a, b) ( (a) > (b) (a) : (b) ) # 其次,把它用函数来实现: int max( int a, int b) { return (a > b a : b) }
Wir werden dort natürlich keine Funktion verwenden Dafür gibt es zwei Gründe: Erstens bringt der Funktionsaufruf zusätzlichen Overhead mit sich, er muss einen Stapelplatz öffnen, die Rücksprungadresse aufzeichnen, die formalen Parameter auf den Stapel verschieben und den Stapel freigeben, wenn von der Funktion zurückgekehrt wird. Dieser Overhead verringert nicht nur die Codeeffizienz, sondern erhöht auch die Codemenge erheblich. Die Verwendung von Makrodefinitionen ist den Funktionen hinsichtlich Codegröße und Geschwindigkeit überlegen. Zweitens müssen die Parameter der Funktion als spezifischer Typ deklariert werden. Daher kann es nur für Ausdrücke des entsprechenden Typs verwendet werden. Wenn wir die Größen zweier Gleitkommatypen vergleichen möchten, müssen wir eine Vergleichsfunktion speziell für Gleitkommatypen schreiben. Im Gegensatz dazu kann die obige Makrodefinition für Ganzzahlen, lange Ganzzahlen, einzelne Gleitkommatypen und alle anderen Typen verwendet werden, die den Operator „>“ zum Vergleichen der Werte verwenden können , das Makro ist unabhängig vom Typ.
Im Vergleich zur Verwendung von Funktionen besteht der Nachteil der Verwendung von Makros darin, dass bei jeder Verwendung eines Makros eine Kopie des Makrodefinitionscodes in das Programm eingefügt wird. Sofern das Makro nicht sehr kurz ist, kann die Verwendung von Makros die Länge Ihres Programms erheblich verlängern.
Das obige ist der detaillierte Inhalt vonSo definieren Sie eine Makrodefinition in der C-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!