# Programmation D/Outils

* Avant de commencer
* Votre premier programme
* Éléments de base du langage et programmation impérative
* Programmation orientée objet
* Éléments avancés du langage
* Outils
* Annexes
* Conclusion
* Avant de commencer
* Votre premier programme
* Éléments de base du langage et programmation impérative
* Programmation orientée objet
* Éléments avancés du langage
* Outils
* Annexes
* Conclusion
[ Modifier le sommaire ]

### Compilation et débogage en ligne de commande
#### Compilation

Pour compiler un programme D, il vous aurez besoin du compilateur ldc et de la bibliothèque standard tango.
Le compilateur ldc offre de nombreuses options de compilation. Vous pouvez lister toutes ces options en tapant :
Je vous présente l'usage courant que j'ai du compilateur :
Ne vous inquiétez pas, les différents arguments sont très simples :
* l'option -w pour activer les warnings afin que le compilateur donne des messages clairs pour améliorer votre code
* l'option -g pour générer les informations de debug, très utile quand on recherche un bogue dans notre programme
* l'option -O2 permet d'optimiser le code machine (il existe 5 niveaux O0 O1 O2 O3 O4 O5)
* ensuite vient le chemin vers le dossier contenant les fichiers sources *.d
* l'option -od spécifie dans quel répertoire mettre les fichier .o (binaires)
* l'option -of spécifie le nom et l'emplacement du fichier exécutable, ici build/monProgramme
* l'option -D permet de générer la documentation
* l'option -Dd spécifie le dossier où sera mise la documentation

#### Debogage

Pour déboguer une application écrite en D, vous pouvez utiliser gdb, tout simplement ! Il existe deux cas de figure de l'utilisation de gdb :
* déboguer les erreurs de compilation
soit d'après l'exemple précédent :
* déboguer le fichier exécutable d'une application D (valable si l'option -g est utilisée) :

### La documentation

Je vous ai déjà donné un aperçu dans Les commentaires. Le compilateur ldc offre la possibilité de générer de la documentation et de la formater pour avoir une belle mise en page html.

#### La syntaxe

La documentation est structurée en sections.
Qu'est-ce qu'une section ? Sémantiquement parlant, une section est une chaîne de caractères suivie par ':' (attention, les sections sont sensibles à la casse).

#### Résumé

La section « résumé » est une section n'étant pas soumise à une chaîne de caractères suivie par ':'. Cette section correspond simplement au premier paragraphe et est optionnelle.

#### Description

La section « description » est une section n'étant pas soumise à une chaîne de caractères suivie par ':'. Cette section correspond au paragraphe qui suit la section « résumé », tant qu'il ne rencontre aucune section spécifiée par une chaîne de caractères suivie par ':'.

#### Auteurs

Cette section liste les auteurs de la manière suivante :

#### Bogues

Cette section liste les bogues connus de la manière suivante :

#### Exemples

Cette section permet de documenter avec des exemples. Un exemple d'utilisation de cette section :

#### Historique

Cette section permet d'écrire les différentes modifications effectuées sur la portion de code à la manière d'un « changelog ».

#### Licence

Cette section permet d'écrire la licence sous laquelle est publiée le code.

#### Retour

Cette section détaille la valeur retournée par la fonction. Cette section est évidement inutile pour les fonctions de type void.

#### Voir aussi

Cette section décrit les choses se rapprochant du code documenté. Il peut notamment contenir des liens (URL).

#### Standards

Cette section permet de spécifier si la partie documentée est en accord avec un quelconque standard que l'on aura défini.

#### Exception

Cette section permet de lister les exceptions et les circonstances qui les déclenchent.

#### Version

Cette section permet de spécifier la version courante du bloc documenté.

#### Mise en évidence
##### Avec du code HTML

La documentation autorise l'écriture de portions de code html

### Sections spéciales
#### Copyright

Cette section informe sur le copyright. La macro COPYRIGHT prend la valeur de la section quand cette dernière est renseignée. Ce comportement particulier apparaît seulement quand cette section est utilisée pour documenter un module.

#### Params

Cette section permet de documenter les paramètres que prend une fonction. Pour cela, on doit lister chaque paramètre. Chaque ligne commence par le nom de la variable suivi de "=" puis de sa description. La description peut s'étendre sur plusieurs lignes.

#### Macros

La section macros suit la même logique que la section params, soit une suite de nom = valeur. Le nom est le nom de la macro et la valeur est le texte de remplacement.