Manuel de suivi dynamique Solaris

Variables scalaires

Les variables scalaires servent à représenter les objets de données individuels de taille fixe, comme les nombres entiers et les pointeurs. Vous pouvez également utiliser des variables scalaires pour les objets à taille fixe constitués d'un ou de plusieurs types de primitive ou composites. Le langage D permet de créer des tableaux et des objets, ainsi que des structures composites. DTrace représente aussi des chaînes sous forme de données scalaires de taille fixe en leur permettant de grossir jusqu'à une longueur maximale prédéfinie. Le contrôle de la longueur des chaînes dans votre programme en D est abordé plus en détails dans le Chapitre6Chaînes de caractères.

Les variables scalaires sont créées automatiquement la première fois que vous attribuez une valeur à un identificateur précédemment non défini dans votre programme en D. Par exemple, pour créer la variable scalaire x de type int, vous pouvez simplement affecter une valeur de type int dans la clause d'une sonde :

BEGIN
{
	x = 123;
}

Les variables scalaires créées de cette manière sont des variables globales : leur nom et leurs données de stockage sont définis une fois et sont visibles dans chaque clause de votre programme en D. Chaque fois que vous référencez l'identificateur x, vous faites référence à un emplacement de stockage unique lié à cette variable.

Contrairement au langage ANSI-C, le langage D ne demande pas de déclarations de variables explicites. Si vous souhaitez déclarer une variable globale pour affecter son nom et son type explicitement avant de l'utiliser, vous pouvez placer une déclaration à l'extérieur des clauses de la sonde dans votre programme, comme illustré dans l'exemple suivant. Les déclarations de variables explicites ne sont pas requises dans la plupart des programmes en D mais peuvent s'avérer utiles lorsque vous souhaitez contrôler soigneusement vos types de variable ou lorsque vous souhaitez commencer votre programme par un ensemble de déclarations et de commentaires documentant les variables de votre programme et leur signification.

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

BEGIN
{
	x = 123;
	...
}

Contrairement au langage ANSI-C, la déclaration de variables en langage D peut ne pas affecter de valeurs initiales. Vous devez utiliser une clause de sonde BEGIN pour affecter n'importe quelle valeur initiale. Le stockage de variable globale est rempli de zéros par DTrace avant que vous ne référenciez la variable.

La définition du langage D n'impose aucune limite de taille ni de nombre de variables en D. Par contre, une limite est définie par l'implémentation de DTrace et par la mémoire disponible sur votre système. Le compilateur D mettra en œuvre toutes les restrictions qu'il est possible d'appliquer au moment de la compilation de votre programme. Vous découvrirez de plus amples informations sur l'ajustement des options en rapport avec les limites du programme dans le Chapitre16Options et paramètres réglables.