Wiki » Historique » Version 188
Patrice Nadeau, 2026-01-18 20:04
| 1 | 1 | Patrice Nadeau | # Règles de codage C |
|---|---|---|---|
| 2 | |||
| 3 | 175 | Patrice Nadeau | Le langage C utilisé avec le compilateur GCC : |
| 4 | 178 | Patrice Nadeau | * Standard [C99](https://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf) (`-std=c99`) |
| 5 | 177 | Patrice Nadeau | * Extensions GNU |
| 6 | 179 | Patrice Nadeau | * **__attribute__((deprecated))** (`-Wdeprecated-declaration`) |
| 7 | * **__attribute__((noreturn))** |
||
| 8 | 181 | Patrice Nadeau | * **#pragma GCC message ""** |
| 9 | * **#pragma GCC warning ""** |
||
| 10 | * **#pragma GCC error ""** |
||
| 11 | 1 | Patrice Nadeau | |
| 12 | --- |
||
| 13 | 184 | Patrice Nadeau | |
| 14 | 182 | Patrice Nadeau | ## Identifiants |
| 15 | 1. Ne DOIT PAS contenir plus de **31** caractères |
||
| 16 | > ANSI standards |
||
| 17 | * a @ z |
||
| 18 | * A @ Z |
||
| 19 | * 0 @ 9 |
||
| 20 | * Trait de soulignement (__) |
||
| 21 | 186 | Patrice Nadeau | 1. En **anglais américain** : |
| 22 | 185 | Patrice Nadeau | * Lettres |
| 23 | * Macros : |
||
| 24 | * Majuscules et minuscules |
||
| 25 | > La parie principale DOIT être en majuscule |
||
| 26 | * Fonctions, variables, énumérations, structures, définition de type : |
||
| 27 | * Minuscules |
||
| 28 | * Nombre |
||
| 29 | * Commence par une lettre |
||
| 30 | * Si plusieurs mots sont utilisés, ils DOIVENT être séparées par des traits de soulignement |
||
| 31 | 1 | Patrice Nadeau | |
| 32 | 187 | Patrice Nadeau | 1. Déclaration |
| 33 | 1. Un objet ayant une visibilité locale DOIT avoir le modificateur `static` |
||
| 34 | 1. Un objet « obsolète », DOIT avoir : |
||
| 35 | 1. Un des attributs : |
||
| 36 | > Génération de message lors de la compilation (`-Wall`) |
||
| 37 | * `deprecated` |
||
| 38 | * `unavailable` |
||
| 39 | 1. Les commentaires Doxygen : |
||
| 40 | * `@deprecated` : Indications sur le remplacement à utiliser |
||
| 41 | * `@since` : Depuis quel version le changement est apparue |
||
| 42 | |||
| 43 | |||
| 44 | 184 | Patrice Nadeau | ## Fichiers |
| 45 | Structure des répertoires et fichiers |
||
| 46 | |||
| 47 | > Format selon la commande `tree --charset ascii` |
||
| 48 | |||
| 49 | ``` |
||
| 50 | . |
||
| 51 | |-- AUTHORS : Fichier contenant les noms et courriels des auteurs |
||
| 52 | |-- bin : Répertoire contenant le fichier exécutable et les librairies compilées |
||
| 53 | |-- ChangeLog : Fichier des changements |
||
| 54 | |-- config.h : Fichier optionel contenant les macros communes au programme dans son ensemble (-imacros) |
||
| 55 | |-- COPYING : Fichier de licence (standard GNU) |
||
| 56 | |-- docs : Répertoire de la documentation (.pdf) |
||
| 57 | |-- include : Répertoire des fichiers d’en-tête (.h) |
||
| 58 | |-- INSTALL |
||
| 59 | |-- lib : Répertoire des libraires externes (liens symboliques) |
||
| 60 | |-- Makefile.in : Fichier d'informations spécifiques du projet pour le Makefile |
||
| 61 | |-- NEWS : |
||
| 62 | |-- obj : Répertoire contenant les objets (.o) |
||
| 63 | |-- README : Fichier d'informations du projet, en format markdown |
||
| 64 | `-- src : Répertoire des fichiers sources (.c) |
||
| 65 | ``` |
||
| 66 | |||
| 67 | ## Fichiers sources |
||
| 68 | 1. Nom du fichier : |
||
| 69 | * Un préfixe en anglais de **8** caractères maximum pouvant contenir : |
||
| 70 | * Lettres minuscule |
||
| 71 | * Chiffres |
||
| 72 | * Trait de soulignement |
||
| 73 | * DOIT contenir un des suffixe suivants : |
||
| 74 | * `.h` : entête |
||
| 75 | * `.c` : sources |
||
| 76 | 1. Contenus |
||
| 77 | * Section Doxygen : |
||
| 78 | 1. `@file` : Le nom du fichier |
||
| 79 | 1. `@brief`: Une brève description |
||
| 80 | 1. `@version`: Le numéro de version |
||
| 81 | 1. `@date`: La date de dernière modification |
||
| 82 | 1. `@author`: Une liste des participant(e)s et leur courriel |
||
| 83 | 1. `@copyright`: La liste des années et participant(e)s |
||
| 84 | * Les fichiers d’entête contiennent en plus |
||
| 85 | 1. Une définition macro pour éviter de ré-inclure le fichier (<https://fr.wikipedia.org/wiki/Include_guard>). |
||
| 86 | |||
| 87 | 162 | Patrice Nadeau | [[Style]] |
| 88 | 1 | Patrice Nadeau | |
| 89 | 183 | Patrice Nadeau | ## Commentaires |
| 90 | 182 | Patrice Nadeau | 1. Précède l’élément à documenté, avec la même indentation |
| 91 | 1. En minuscules et commence par une majuscule |
||
| 92 | 1. Phrase complète en français |
||
| 93 | 1. Sur une ou plusieurs lignes |
||
| 94 | 1. De style |
||
| 95 | * C (/*... */) : Commentaires du code |
||
| 96 | * Javadoc (/** */, @) : Commentaires devant apparaître dans la documentation (Doxygen) |
||
| 97 | > La documentation est partie intégrante du code |
||
| 98 | 1. Les « décorations » (gras, italique, etc.) sont faites avec la syntaxe Markdown |
||
| 99 | * Italique : `∗` ou `_` |
||
| 100 | * Gras : `∗∗` ou `__` |
||
| 101 | 1. Les commentaires suivants peuvent aussi être utilisés |
||
| 102 | * `@todo` |
||
| 103 | * `@bug` |
||
| 104 | 82 | Patrice Nadeau | |
| 105 | 169 | Patrice Nadeau | [[Identifiants]] |
| 106 | 163 | Patrice Nadeau | |
| 107 | 168 | Patrice Nadeau | [[Macros et préprocesseur]] |
| 108 | 162 | Patrice Nadeau | |
| 109 | [[Énumérations]] |
||
| 110 | |||
| 111 | [[Typedef]] |
||
| 112 | |||
| 113 | [[Variables]] |
||
| 114 | |||
| 115 | [[Structures]] |
||
| 116 | |||
| 117 | [[Fonctions]] |
||
| 118 | |||
| 119 | [[Librairies]] |
||
| 120 | 1 | Patrice Nadeau | |
| 121 | 159 | Patrice Nadeau | [[Atmel AVR]] |