Handbuch zur dynamischen Ablaufverfolgung in Solaris

Skalare Variablen

Mit skalaren Variablen werden einzelne Datenobjekte fester Größe wie zum Beispiel Ganzzahlen und Zeiger dargestellt. Skalare Variablen können auch Objekte fester Größe aufnehmen, die sich aus einem oder mehreren Grund- oder Verbundtypen zusammensetzen. D bietet die Möglichkeit, sowohl Vektoren von Objekten als auch zusammengesetzte Strukturen zu erstellen. DTrace stellt auch Zeichenketten als skalare Variablen fester Größe dar, indem sie die Möglichkeit erhalten, bis zu einer vordefinierten maximalen Länge anzuwachsen. Wie Sie auf die Zeichenkettenlänge in Ihren D-Programmen Einfluss nehmen, wird in Kapitel 6Zeichenketten näher besprochen.

Skalare Variablen werden automatisch erzeugt, wenn Sie einem zuvor nicht definierten Bezeichner im D-Programm zum ersten Mal einen Wert zuweisen. Um beispielsweise eine skalare Variable x des Typs int zu erzeugen, brauchen Sie ihr lediglich in einer beliebigen Prüfpunktklausel einen Wert des Typs int zuzuweisen:

BEGIN
{
	x = 123;
}

Auf diese Weise erzeugte skalare Variablen sind globaler Natur: Ihr Name und ihre Datenspeicherposition werden einmal definiert und sind in jeder Klausel des D-Programms sichtbar. Mit jeder Referenzierung des Bezeichners x verweisen Sie auf eine bestimmte Speicherposition, die dieser Variable zugewiesen wurde.

Im Gegensatz zu ANSI-C erfordert D keine explizite Variablendeklaration. Wenn Sie eine globale Variable dennoch deklarieren möchten, um ihr vor Gebrauch explizit einen Namen und Typ zuzuweisen, können Sie die Deklaration, wie in nachfolgendem Beispiel dargestellt, außerhalb der Prüfpunktklauseln in das Programm einfügen. Explizite Variablendeklarationen sind in den meisten D-Programmen nicht erforderlich, können sich aber dann als hilfreich erweisen, wenn Sie es vorziehen, die Variablentypen genau unter Kontrolle zu halten oder Ihre Programm mit Deklarationen und Kommentaren beginnen zu lassen, die Ihre Programmvariablen und ihre Bedeutung dokumentieren.

int x; /* declare an integer x for later use */

BEGIN
{
	x = 123;
	...
}

Im Gegensatz zu ANSI-C-Deklarationen dürfen Variablendeklarationen in D keine Anfangswerte zuweisen. Für die Zuweisung von Anfangswerten müssen Sie eine BEGIN-Prüfpunktklausel verwenden. Der gesamte Speicher der globalen Variable wird von DTrace mit Nullen aufgefüllt, bevor Sie die Variable zum ersten Mal referenzieren.

In der Definition der Programmiersprache D besteht keine Beschränkungen für die Größe und Anzahl von D-Variablen. Es sind jedoch Beschränkungen durch die DTrace-Implementierung und die auf dem System verfügbare Speicherkapazität gesetzt. Wenn Sie das Programm kompilieren, werden vom D-Compiler alle anwendbaren Beschränkungen in Kraft gesetzt. In Kapitel 16Optionen und Tunables erfahren Sie, wie Sie Optionen in Verbindung mit den Programmbeschränkungen abstimmen können.