#define-Direktive (Konstante)

Präprozessordi directive that assigns a meaningful name to a constant in your application. (Präprozessordi direktive, die einer Konstante in Ihrer Anwendung einen aussagekräftigen Namen zuordnt.

#Define identifiertoken-string

Parameter

Element Beschreibung
Bezeichner
Bezeichner der Konstante.
token-string [ Optional]
Der Wert der Konstante. Dieser Parameter besteht aus einer Reihe von Token, z. B. Schlüsselwörtern, Konstanten oder vollständigen Anweisungen. Mindestens ein Leerzeichen muss diesen Parameter vom Bezeichnerparameter trennen. dieses Leerzeichen wird weder als Teil des ersetzten Texts noch als Leerzeichen nach dem letzten Token des Texts betrachtet.
Wenn Sie diesen Parameter ausschließen, werden alle Instanzen des Bezeichnerparameters aus der Quelldatei entfernt. Der Bezeichner bleibt definiert und kann mithilfe der # if-definiertenAnweisungen , # ifdef und # ifndef getestet werden.

Hinweise

Alle Instanzen des Bezeichnerparameters, die nach der # define-Direktive in der Quelldatei auftreten, werden durch den Wert des Parameters token-string ersetzt. Der Bezeichner wird nur ersetzt, wenn er ein Token bildet. Beispielsweise wird der Bezeichner nicht ersetzt, wenn er in einem Kommentar, innerhalb einer Zeichenfolge oder als Teil eines längeren Bezeichners angezeigt wird.

Die # Undef-Direktive weist den Präprozessor an, die Definition eines Bezeichners zu vergessen. Weitere Informationen finden Sie unter # undef Directive (DirectX HLSL).

Das Definieren von Konstanten mit der Compileroption /D hat die gleiche Wirkung wie die Verwendung der # define-Direktive am Anfang der Datei. Mit der Option /D können bis zu 30 Konstanten definiert werden. Ein Beispiel dafür, wie dies verwendet werden kann, finden Sie im Abschnitt Beispiele von # ifdef und ).

Beispiele

Im folgenden Beispiel wird der Bezeichner WIDTH als ganzzahlige Konstante 80 definiert und dann LENGTH in Bezug auf WIDTH und die ganzzahlige Konstante 10 definiert.

#define WIDTH       80
#define LENGTH      ( WIDTH + 10 )

Jede nachfolgende Instanz von LENGTH wird durch (WIDTH + 10) ersetzt, und jede nachfolgende Instanz von WIDTH + 10 wird durch den Ausdruck (80 + 10) ersetzt. Die Klammern um WIDTH + 10 sind wichtig, da sie die Interpretation in Anweisungen wie den folgenden steuern.

var = LENGTH * 20;

Nach der Vorverarbeitungsphase wird die Anweisung wie folgt, die zu 1.800 ausgewertet wird.

var = ( 80 + 10 ) * 20;

Ohne Klammern würde das Ergebnis wie folgt sein, was zu 280 ausgewertet wird.

var = 80 + 10 * 20;

Präprozessordirektiven (DirectX HLSL)

#Definieren von Überladungen

#undef-Direktive (DirectX HLSL)