commit c0af245d3385cb882d07ee8cdade7b319d9db74b
parent 86131d6f7f364b35e0027d2d3b97511a707ad7a7
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Fri, 17 Jul 2026 09:48:19 +0200
Relecture
Diffstat:
| M | doc/fr/star-c.7 | | | 84 | ++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------- |
1 file changed, 53 insertions(+), 31 deletions(-)
diff --git a/doc/fr/star-c.7 b/doc/fr/star-c.7
@@ -365,11 +365,19 @@ Utiliser des commentaires dès lors que la seule expressivité serrée du
code ne permet pas d'exprimer l'entièreté du discours que les sources
doivent rendre compte, ou la logique qu'il met effectivement en oeuvre.
.Pp
+Ajouter un espace après l'ouverture du commentaire
+.Ql /*
+et avant sa fermeture
+.Ql */ .
+.Pp
Si un commentaire occupe plusieurs lignes, ajouter un caractère
.Ql *
en début de ligne, aligné avec le caractère
.Ql *
-de la ligne qui précède :
+de la ligne qui précède.
+Ajouter un espace entre le caractère
+.Ql * ,
+qui marque la continuation du commentaire, et la suite du commentaire :
.Bd -literal -offset Ds
/* Valeurs de hachage initiales, à savoir les 32 premiers bits
* de la partie fractionnaire des racines carrées des 4 premiers
@@ -415,7 +423,8 @@ foo(uint32_t bar[4], const char baz[64])
d'encadrement est limitée par des contraintes d'édition de la présente
page de manuel.
Dans un fichier source, étendre ces lignes pour qu'elles occupent la
-longueur maximale recommandée pour une ligne, à savoir 80 caractères.
+longueur maximale recommandée pour une ligne
+.Pq section Sx LA LONGUEUR DES LIGNES .
.Pp
Pour expliciter le contexte général d'un fichier, en terme d'utilisation
ou d'architecture logicielle, insérer un commentaire en en-tête du
@@ -1107,7 +1116,7 @@ aux variables qui n'ont pas vocation à être modifiées par la fonction.
Et ce quand bien même leur modification n'aurait aucune conséquence,
comme pour les variables de données simples, copiées à l'appel de la
fonction.
-L'objet étant de souligner quelles sont des variables en entrée :
+L'objet étant de souligner qu'elles sont des variables en entrée :
.Bd -literal -offset Ds
static void
foo
@@ -1154,7 +1163,7 @@ foo(int x, int y, int z)
}
.Ed
.Pp
-Cette liste explicite quels paramètres sont ignorés, en plus de
+Cette conversion explicite quels paramètres sont ignorés, en plus de
désactiver les avertissements de compilation quant à la définition de
paramètres non utilisés
.Pq option Fl Wunused-parameter No de Xr gcc 1 .
@@ -1167,13 +1176,12 @@ structure auquel un découpage en sous-fonction(s) pourrait remédier
.Pp
Initialiser les variables dès leur définition avec sinon une valeur
valide, au moins une valeur par défaut.
-Et d'ainsi éviter l'utilisation de variables non initialisées.
+L'objet étant d'éviter l'utilisation de variables non initialisées.
D'apparence peu critique pour les variables de type primitif, cette
initialisation l'est bien plus pour les variables structurées, dont la
-liste des membres peut changer, sans que le code appelant n'est
-forcément à s'en soucier dès lors qu'ils sont correctement initialisés.
-Si elle existe, utiliser la constante proposée avec la structure pour
-initialiser une variable de ce type.
+liste des membres peut changer.
+Si elle existe, utiliser la constante proposée avec la définition du
+type structuré pour initialiser une variable de ses variables
.Pq voir section Sx LES STRUCTURES .
En son absence n'initialiser que le premier membre de la variable ; le
language C assure alors que les autres membres seront initialisés à
@@ -1192,11 +1200,12 @@ Au sein d'une même fonction, définir les variables au plus proche de
leur utilisation de sorte à ce que le contexte dans lequel elles sont
utilisées participe à les caractériser.
Par exemple, une variable
-.Va i utilisée dans un bloc comme variable temporaire, et comme indice
-de boucle dans un autre gagnera en expressivité et en robustesse à être
+.Va i
+utilisée dans un bloc comme variable temporaire, et comme indice de
+boucle dans un autre, gagnera en expressivité et en robustesse à être
définie localement à chaque bloc ;
-les deux variables étant, par construction, non seulement séparées mais
-aussi sans effet de bord de l'une sur l'autre :
+les deux variables étant alors, par construction, non seulement séparées
+mais aussi sans effet de bord de l'une sur l'autre :
.Bd -literal -offset Ds
if(foo) {
const int i = bar();
@@ -1208,8 +1217,8 @@ if(foo) {
}
.Ed
.Pp
-Dans un même bloc, regrouper les définitions des variables dès lors
-qu'elles sont liés sémantiquements.
+Regrouper les définitions des variables dès lors qu'elles sont liées
+sémantiquements.
Les trier ensuite par taille mémoire décroissante, et enfin par ordre
alphabétique :
.Bd -literal -offset Ds
@@ -1352,16 +1361,23 @@ contrôle, et force l'ajout d'un point virgule
.Ql \&;
.Pq ou d'une virgule Ql \&,
après son utilisation, telle n'importe quelle autre instruction C.
-Utiliser un
-.Ql (void)0
-terminal, plutôt que la structure de contrôle
-.Ql do { ... } while(0)
-plus courante, évite les avertissements de compilation émis par certains
-compilateur quant à l'utilisation d'une expression conditionnelle
-constante.
-.Pp
-Ouvrir le bloc sur la même ligne que le nom de la macro et indenter son
-contenu par rapport à sa directive de définition.
+.Pp
+En C, il est plus courant d'encapsuler les instructions d'une macro
+dans une structure de contrôle
+.Ql do { ... } while (0)
+plutôt que dans un bloc terminé par la converstion de l'entier zéro vers
+un type vide
+.Ql (void)0 .
+Si les deux écritures répondent aux mêmes objectifs, cette dernière
+convention évite les avertissements émis par certains compilateur quant
+à l'utilisation d'une expression conditionnelle constante dans
+.Ql while (0) .
+.Pp
+Ouvrir le bloc sur la même ligne que le nom de la macro, en ajoutant un
+espace avant l'acolade
+.Ql { .
+Indenter le contenu du bloc par rapport à la directive de définition de
+la macro.
Justifer à droite les caractères anti-slash
.Ql \e
en fin de chaque ligne de sorte à faciliter la lecture de la séquence
@@ -1418,23 +1434,29 @@ externes.
Et ce précisément en raison de son caractère local, qui lie étroitement
la macro à son seul contexte d'utilisation.
.Bd -literal -offset Ds
-static res_T
+static int
foo(const int x)
{
char s[10] = {0};
- res_T res = RES_OK;
+ int line = 0;
+ int err = 0;
- #define CALL(Func) {
- if((res=(Func)) != RES_OK) goto error;
+ #define CALL(Func) { \e
+ if((err=(Func)) != 0) { \e
+ line = __LINE__; \e
+ goto error; \e
+ } \e
} (void)0
+
CALL(bar(x, s));
CALL(quux(s));
+
#undef CALL
exit:
- return res;
+ return err;
error:
- fprinf(stderr, "error: %s\en", res_to_cstr(res));
+ fprinf(stderr, "erreur %d ligne %d\en", err, line);
goto exit;
}
.Ed