Freigeben über


Makros (C/C++)

Präprozessorlaufs erweitert Makros in allen Zeilen, die nicht Präprozessordirektiven (Zeilen, die nicht # da das erste Nicht-weiß SPACE-Zeichen haben) und in Teilen von mehreren Direktive, die nicht als Teil einer bedingten Kompilierung übersprungen werden. "Direktiven für die bedingte Kompilierung“ ermöglichen Ihnen die Kompilierung von Teilen einer Quelldatei zu unterdrücken, indem sie einen konstanten Ausdruck oder einen Bezeichner testen, um zu bestimmen, welche Textblöcke an den Compiler übergeben werden, und die Textblöcke in der Quelldatei entfernt werden während des Präprozessorlaufs.

Die #define-Direktive wird normalerweise verwendet, um aussagekräftige Bezeichner mit Konstanten, Schlüsselwörter und häufig verwendete Anweisungen oder Ausdrücke zuzuordnen.Bezeichner, die Konstanten darstellen, werden manchmal als „symbolische Konstanten „oder“ bezeichnet verkünden“ Konstanten. Bezeichner, die Anweisungen oder Ausdrücke darstellen, werden als „macros“. In dieser Dokumentation Präprozessor nur der Begriff „Makro“ wird verwendet.

Wenn der Name des Makros im Programm Quelltext oder den Argumenten von bestimmten anderen Befehlen Präprozessor erkannt wird, wird er als Aufruf dieses Makro behandelt.Der Name des Makro wird durch eine Kopie des Makros Linktext ersetzt.Wenn das Makro Argumente akzeptiert, werden die Parameter nach dem Makronamen für formale Parameter im Makro Text ersetzt.Der Prozess des Ersetzens eines Makro-Aufrufs mit der verarbeiteten Kopie des Textes „Erweiterung von“ Makro-Aufrufs aufgerufen.

Praktisch gibt es zwei Typen von Makros. "ähnliche OBJECT“ macros „, wenn keine Argumente akzeptieren ähnliche FUNCTION“ macros definiert werden können, um Argumente akzeptiert, damit sie z. B. Funktionsaufrufe aus und reagiert wird.Da Makros keine wirkliche Funktion generieren, können Sie Programme schneller ausgeführt werden, indem Sie manchmal Funktionsaufrufen mit Makros ersetzen.(In C++ sind Inlinefunktionen häufig eine bevorzugte Methode.) Makros können jedoch Probleme erstellen, wenn Sie sie nicht sorgfältig definieren und verwenden.Möglicherweise müssen Sie Klammern bei Makrodefinitionen mit Argumenten verwenden, um die gewünschte Rangfolge in einem Ausdruck zu erhalten.Makros außerdem möglicherweise nicht ordnungsgemäß behandeln Ausdrücke mit Nebeneffekten.Weitere Informationen finden Sie im Beispiel in getrandomDie #define Directive .

Nachdem Sie ein Makro definiert haben, können Sie ihn nicht in einen anderen Wert neu definieren, ohne zuerst die ursprüngliche Definition zu entfernen.Sie können jedoch das Makro mit derselben Definition genau neu definieren.Daher kann die gleiche Definition in einem Programm mehrmals vorkommen.

# entfernenundef-Direktive die Definition eines Makros.Nachdem Sie die Definition entfernt haben, können Sie das Makro in einen anderen Wert neu definieren.Die #define DirectiveDie #undef Directive und erläutert die #define und #undef-Direktive.

Weitere Informationen finden Sie unter

Siehe auch

Weitere Ressourcen

C/C++-Präprozessorreferenz