http://nicolasj.developpez.com/articles/c99/
Vous pouvez laisser un commentaire sur cet article à la suite.Au travers de cet article, je vous propose un tour d'horizon des nouveautés du C99.
http://nicolasj.developpez.com/articles/c99/
Vous pouvez laisser un commentaire sur cet article à la suite.Au travers de cet article, je vous propose un tour d'horizon des nouveautés du C99.
Je me permet une remarque sur cet ancien article :
http://nicolasj.developpez.com/articles/c99/#LIII-C
Je ne vois pas en quoi ne pas tout déclarer au début nuirait à la lisibilité du code. Bien au contraire, ça permet de pouvoir initialiser dès le départ les variables à leur bonne valeur, et donc simplifie la logique de code (une variable n'a pas deux états successifs), évite les risques d'erreur en cas de réorganisation, et je trouve augmente la clarté, puisque voir une valeur d'initialisation d'une variable est souvent un indice supplémentaire (en plus de son nom) pour savoir quel sera son rôle dans le programme.
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Le C permet de définir précisément la portée des variables grâce à l'usage des blocs { }. Ca permet de les définir à l'endroit précis où on les utilise et donc d'éviter le recyclage sauvage (avec utilisation d'une valeur précédente erronée, par exemple).
Un compilateur bien né saura réutiliser la même zone mémoire (ou le même registre). La } indique clairement "à partir de maintenant, la zone mémoire est libre et peut être réassignée à une autre variable".
Exemple de programmation défensive :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void f(int n) { int i; for (i = 0;i < n; i++) { } while (i < n) /* est-on certain qu'on parle du même i ? */ { } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 void f(int n) { { int i; for (i = 0;i < n; i++) { } } while (i < n) /* err : i inconnu ! */ { } }Possibilité de code correct :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 void f(int n) { { int i; for (i = 0;i < n; i++) { } } { int i; while (i < n) /* warn : i non initialisé ! */ { } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 void f(int n) { { int i; for (i = 0;i < n; i++) { } } { int i = n / 2; /* simple exemple arbitraire */ while (i < n) { /* ... */ } } }
Partager