Wiki » Historique » Version 184
Patrice Nadeau, 2026-01-18 19:59
| 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 | 1 | Patrice Nadeau | |
| 22 | 184 | Patrice Nadeau | ## Fichiers |
| 23 | Structure des répertoires et fichiers |
||
| 24 | |||
| 25 | > Format selon la commande `tree --charset ascii` |
||
| 26 | |||
| 27 | ``` |
||
| 28 | . |
||
| 29 | |-- AUTHORS : Fichier contenant les noms et courriels des auteurs |
||
| 30 | |-- bin : Répertoire contenant le fichier exécutable et les librairies compilées |
||
| 31 | |-- ChangeLog : Fichier des changements |
||
| 32 | |-- config.h : Fichier optionel contenant les macros communes au programme dans son ensemble (-imacros) |
||
| 33 | |-- COPYING : Fichier de licence (standard GNU) |
||
| 34 | |-- docs : Répertoire de la documentation (.pdf) |
||
| 35 | |-- include : Répertoire des fichiers d’en-tête (.h) |
||
| 36 | |-- INSTALL |
||
| 37 | |-- lib : Répertoire des libraires externes (liens symboliques) |
||
| 38 | |-- Makefile.in : Fichier d'informations spécifiques du projet pour le Makefile |
||
| 39 | |-- NEWS : |
||
| 40 | |-- obj : Répertoire contenant les objets (.o) |
||
| 41 | |-- README : Fichier d'informations du projet, en format markdown |
||
| 42 | `-- src : Répertoire des fichiers sources (.c) |
||
| 43 | ``` |
||
| 44 | |||
| 45 | ## Fichiers sources |
||
| 46 | 1. Nom du fichier : |
||
| 47 | * Un préfixe en anglais de **8** caractères maximum pouvant contenir : |
||
| 48 | * Lettres minuscule |
||
| 49 | * Chiffres |
||
| 50 | * Trait de soulignement |
||
| 51 | * DOIT contenir un des suffixe suivants : |
||
| 52 | * `.h` : entête |
||
| 53 | * `.c` : sources |
||
| 54 | 1. Contenus |
||
| 55 | * Section Doxygen : |
||
| 56 | 1. `@file` : Le nom du fichier |
||
| 57 | 1. `@brief`: Une brève description |
||
| 58 | 1. `@version`: Le numéro de version |
||
| 59 | 1. `@date`: La date de dernière modification |
||
| 60 | 1. `@author`: Une liste des participant(e)s et leur courriel |
||
| 61 | 1. `@copyright`: La liste des années et participant(e)s |
||
| 62 | * Les fichiers d’entête contiennent en plus |
||
| 63 | 1. Une définition macro pour éviter de ré-inclure le fichier (<https://fr.wikipedia.org/wiki/Include_guard>). |
||
| 64 | |||
| 65 | ### Exemple |
||
| 66 | ```c |
||
| 67 | #ifndef _test_h |
||
| 68 | #define _test_h |
||
| 69 | |||
| 70 | 154 | Patrice Nadeau | |
| 71 | 162 | Patrice Nadeau | [[Style]] |
| 72 | 1 | Patrice Nadeau | |
| 73 | 183 | Patrice Nadeau | ## Commentaires |
| 74 | 182 | Patrice Nadeau | 1. Précède l’élément à documenté, avec la même indentation |
| 75 | 1. En minuscules et commence par une majuscule |
||
| 76 | 1. Phrase complète en français |
||
| 77 | 1. Sur une ou plusieurs lignes |
||
| 78 | 1. De style |
||
| 79 | * C (/*... */) : Commentaires du code |
||
| 80 | * Javadoc (/** */, @) : Commentaires devant apparaître dans la documentation (Doxygen) |
||
| 81 | > La documentation est partie intégrante du code |
||
| 82 | 1. Les « décorations » (gras, italique, etc.) sont faites avec la syntaxe Markdown |
||
| 83 | * Italique : `∗` ou `_` |
||
| 84 | * Gras : `∗∗` ou `__` |
||
| 85 | 1. Les commentaires suivants peuvent aussi être utilisés |
||
| 86 | * `@todo` |
||
| 87 | * `@bug` |
||
| 88 | 82 | Patrice Nadeau | |
| 89 | 169 | Patrice Nadeau | [[Identifiants]] |
| 90 | 163 | Patrice Nadeau | |
| 91 | 168 | Patrice Nadeau | [[Macros et préprocesseur]] |
| 92 | 162 | Patrice Nadeau | |
| 93 | [[Énumérations]] |
||
| 94 | |||
| 95 | [[Typedef]] |
||
| 96 | |||
| 97 | [[Variables]] |
||
| 98 | |||
| 99 | [[Structures]] |
||
| 100 | |||
| 101 | [[Fonctions]] |
||
| 102 | |||
| 103 | [[Librairies]] |
||
| 104 | 1 | Patrice Nadeau | |
| 105 | 159 | Patrice Nadeau | [[Atmel AVR]] |