#undef

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Makros definieren und deren Definition aufheben - Index


Syntax

#undef makro_bezeichner

Beschreibung

Mit der Direktive #undef können Sie ein Makro außer Kraft setzen. Dabei wird eine vorher bestehende Verbindung zwischen Makrobezeichner und Symbolfolge aufgelöst. Die Makrodefinition wird praktisch "vergessen", und der Makrobezeichner ist dann undefiniert. Innerhalb einer #undef-Zeile findet keine Makroerweiterung statt.

Der Status "definiert" bzw. "undefiniert" stellt eine wichtige Eigenschaft eines Bezeichners dar, unabhängig von seiner tatsächlichen Definition. Mit den Bedingungsdirektiven #ifdef und #ifndef wird geprüft, ob ein Bezeichner momentan definiert ist oder nicht. Sie bieten damit einen flexiblen Mechanismus zur Steuerung vieler Aspekte der Compilierung.

Nachdem die Definition eines Makrobezeichners aufgehoben worden ist, kann er mit #define neu definiert werden, wobei man die frühere oder eine andere Symbolfolge verwenden kann.

Der Versuch, einen bereits definierten Makrobezeichner erneut zu definieren, führt zu einer Warnung, falls die neue Definition nicht exakt Symbol für Symbol der vorhandenen entspricht. Wenn Definitionen in anderen Header-Dateien vorkommen können, ist folgende Strategie empfehlenswert:

#ifndef BLOCK_SIZE #define BLOCK_SIZE 512 #endif

Die mittlere Zeile wird ignoriert, wenn BLOCK_SIZE aktuell definiert ist. Ist BLOCK_SIZE dagegen zur Zeit nicht definiert, so erfolgt die Definition in der mittleren Zeile.

Es ist kein Semikolon (;) erforderlich, um eine Präprozessor-Direktive abzuschließen. Jedes Zeichen in der Symbolfolge, einschließlich des Semikolons, taucht in der Makroerweiterung auf. Die Symbolfolge endet mit dem ersten Zeilenvorschubzeichen, dem kein Backslash vorangeht. Jede Folge von Whitespace-Zeichen, einschließlich von Kommentaren in der Symbolfolge, wird durch ein einziges Leerzeichen ersetzt.

Siehe auch