Cette subsection est EXHAUSTIVE et CONFORME a ANSI C sauf pour le pb a la ligne MIS EN COMMENTAIRE (car on ne parle pas des constantes caractères de plusieurs caractères)
References : K&R : A2.2 ; ANSI C : 6.1.9
La suite du chapitre est formée de recommandations de mon cru
|
/* Ceci est un commentaire */
Toute occurrence de /* est interprétée comme le début d'un commentaire sauf dans une chaîne littérale, ou un commentaire (les commentaires ne peuvent donc pas être imbriqués).
Pour le niveau unité de compilation, voici un exemple tiré du source de perl :
/* * Copyright (c) 1991, Larry Wall * * You may distribute under the terms of either the * GNU General Public License or the Artistic License, * as specified in the README file. */
Pour le niveau de la procédure, je trouve agréable de réaliser des espèces de cartouches permettant de découper visuellement un listing en ses différentes procédures, comme ceci par exemple :
/*************************************************/ /* */ /* strcpy */ /* */ /* But: */ /* copie une chaîne dans une autre */ /* */ /* Interface: */ /* s1 : chaîne destination */ /* s2 : chaîne source */ /* */ /*************************************************/
En ce qui concerne le niveau groupe d'instruction, il est classique de faire une mise en page comme dans l'exemple suivant tiré du source de dvips 1.3 :
/* * If nothing above worked, then we get desperate. We * attempt to open the stupid font at one of a small set * of predefined sizes, and then use PostScript scaling to * generate the correct size. * * We much prefer scaling up to scaling down, since * scaling down can omit character features, so we try the * larger sizes first, and then work down. */
Pour le niveau déclaration ou instruction, on commentera sur la même ligne. Exemple tiré du source du compilateur GNU CC : ifundefinedmobilemode
char *name; /* Function unit name. */ struct function_unit *next; /* Next function unit. */ int multiplicity; /* Number of units of this type. */ int simultaneity; /* Maximum number of simultaneous insns on this function unit or 0 if unlimited. */ struct range ready_cost; /* Range of ready cost values. */ struct range issue_delay; /* Range of issue delay values. */