Wiki » Historique » Révision 191
Révision 190 (Patrice Nadeau, 2026-01-18 20:07) → Révision 191/213 (Patrice Nadeau, 2026-01-18 20:10)
# Règles de codage C
Le langage C utilisé avec le compilateur GCC :
* Standard [C99](https://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf) (`-std=c99`)
* Extensions GNU
* **__attribute__((deprecated))** (`-Wdeprecated-declaration`)
* **__attribute__((noreturn))**
* **#pragma GCC message ""**
* **#pragma GCC warning ""**
* **#pragma GCC error ""**
---
## Identifiants
1. Ne DOIT PAS contenir plus de **31** caractères
> ANSI standards
* a @ z
* A @ Z
* 0 @ 9
* Trait de soulignement (__)
1. En **anglais américain** :
* Lettres
* Macros :
* Majuscules et minuscules
> La parie principale DOIT être en majuscule
* Fonctions, variables, énumérations, structures, définition de type :
* Minuscules
* Nombre
* Commence par une lettre
* Si plusieurs mots sont utilisés, ils DOIVENT être séparées par des traits de soulignement
1. Déclaration
1. Un objet ayant une visibilité locale DOIT avoir le modificateur `static`
1. Un objet « obsolète », DOIT avoir :
1. Un des attributs :
> Génération de message lors de la compilation (`-Wall`)
* `deprecated`
* `unavailable`
1. Les commentaires Doxygen :
* `@deprecated` : Indications sur le remplacement à utiliser
* `@since` : Depuis quel version le changement est apparue
## Fichiers
Structure des répertoires et fichiers
> Format selon la commande `tree --charset ascii`
```
.
|-- AUTHORS : Fichier contenant les noms et courriels des auteurs
|-- bin : Répertoire contenant le fichier exécutable et les librairies compilées
|-- ChangeLog : Fichier des changements
|-- config.h : Fichier optionel contenant les macros communes au programme dans son ensemble (-imacros)
|-- COPYING : Fichier de licence (standard GNU)
|-- docs : Répertoire de la documentation (.pdf)
|-- include : Répertoire des fichiers d’en-tête (.h)
|-- INSTALL
|-- lib : Répertoire des libraires externes (liens symboliques)
|-- Makefile.in : Fichier d'informations spécifiques du projet pour le Makefile
|-- NEWS :
|-- obj : Répertoire contenant les objets (.o)
|-- README : Fichier d'informations du projet, en format markdown
`-- src : Répertoire des fichiers sources (.c)
```
## Fichiers sources
1. Nom du fichier :
* Un préfixe en anglais de **8** caractères maximum pouvant contenir :
* Lettres minuscule
* Chiffres
* Trait de soulignement
* DOIT contenir un des suffixe suivants :
* `.h` : entête
* `.c` : sources
1. Contenus
* Section Doxygen :
1. `@file` : Le nom du fichier
1. `@brief`: Une brève description
1. `@version`: Le numéro de version
1. `@date`: La date de dernière modification
1. `@author`: Une liste des participant(e)s et leur courriel
1. `@copyright`: La liste des années et participant(e)s
* Les fichiers d’entête contiennent en plus
1. Une définition macro pour éviter de ré-inclure le fichier (<https://fr.wikipedia.org/wiki/Include_guard>).
[[Style]]
## Commentaires
1. Précède l’élément à documenté, avec la même indentation
1. En minuscules et commence par une majuscule
1. Phrase complète en français
1. Sur une ou plusieurs lignes
1. De style
* C (/*... */)
1. Doxygen DOIT aussi être utilisé
: Commentaires du code
> La documentation est partie intégrante du code
1. Les « décorations » (gras, italique, etc.) sont faites avec la syntaxe Markdown
[[Macros et préprocesseur]]
[[Énumérations]]
[[Typedef]]
[[Variables]]
[[Structures]]
[[Fonctions]]
[[Atmel AVR]]