Wiki » Historique » Révision 202
« Précédent |
Révision 202/208
(diff)
| Suivant »
Patrice Nadeau, 2026-01-18 20:24
Règles de codage C¶
Le langage C utilisé avec le compilateur GCC :
- Standard C99 (
-std=c99) - Extensions GNU
-
attribute((deprecated)) (
-Wdeprecated-declaration) - attribute((noreturn))
- #pragma GCC message ""
- #pragma GCC warning ""
- #pragma GCC error ""
-
attribute((deprecated)) (
TODO : static & const
- Contenu
- Règles de codage C
Style¶
- DOIT être de style Allman
- L’indentation DOIT être de 4 espaces
- Une ligne ne DOIT PAS avoir plus de 80 caractères
La barre oblique inversée DOIT être utilisée dans les longues chaine de caractères (string)
- Une instruction par ligne
- Une espace avant et après un opérateur DOIT être utilisée sauf pour les opérateurs unaires
- L’opérateur ternaire
?:ne DOIT PAS être utilisé - La constante DOIT être placée à la gauche de l’opérateur d’équivalence (
==)Prévient les erreurs lors d'ajout dans les blocs d'une seule instruction
Identifiants¶
- (a...z, A..Z, 0..9, _)
- Ne DOIT PAS contenir plus de 31 caractères
- En anglais américain :
- Lettres
- Macros :
- Majuscules et minuscules
La parie principale DOIT être en majuscule
- Majuscules et minuscules
- Fonctions, variables, énumérations, structures, définition de type :
- Minuscules
- Macros :
- Nombre
- Commence par une lettre
- Si plusieurs mots sont utilisés, ils DOIVENT être séparées par des traits de soulignement
- Lettres
- Déclaration
- Un objet ayant une visibilité locale DOIT avoir le modificateur
static - Un objet « obsolète », DOIT avoir :
- Un des attributs :
Génération de message lors de la compilation (
-Wall)deprecatedunavailable
- Les commentaires Doxygen :
-
@deprecated: Indications sur le remplacement à utiliser -
@since: Depuis quel version le changement est apparue
-
- Un des attributs :
- Un objet ayant une visibilité locale DOIT avoir le modificateur
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¶
- 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
-
- Un préfixe en anglais de 8 caractères maximum pouvant contenir :
- Contenus
- Section Doxygen :
-
@file: Le nom du fichier -
@brief: Une brève description -
@version: Le numéro de version -
@date: La date de dernière modification -
@author: Une liste des participant(e)s et leur courriel -
@copyright: La liste des années et participant(e)s
-
- Les fichiers d’entête contiennent en plus
- Une définition macro pour éviter de ré-inclure le fichier (https://fr.wikipedia.org/wiki/Include_guard).
- Section Doxygen :
Commentaires¶
- Précède l’élément à documenté, avec la même indentation
- En minuscules et commence par une majuscule
- Phrase complète en français
- Sur une ou plusieurs lignes
- De style C (/*... */)
- Doxygen DOIT aussi être utilisé
- Les « décorations » (gras, italique, etc.) sont faites avec la syntaxe Markdown
Macros et préprocesseur¶
Directives du préprocesseur gcc.
-
Les macros ne devant plus être utilisées, DOIVENT générer un message lors de la compilation avec #pragma GCC poison
Dans ce cas, la documentation doit indiquer le substitut à utiliser
Pour la définition d’une valeur entière signée (int), unenumDOIT être utilisé. -
Définition conditionnel : Utiliser une forme évitant les répétitions.
-
Macros #warning et #error : Utilisées pour afficher des avertissements ou des erreurs lors de la compilation.
N’est pas documenté dans Doxygen.
-
Un #define est utilisé pour remplacer une valeur au moment de la compilation
Pour la définition d'une valeur « integer », un enum DOIT être utilisé.
Énumérations¶
DOIT être utilisée pour définir une série de valeurs.
- Permet l’utilisation dans une boucle avec des valeurs prédéfinis
Typedef¶
- En minuscule
- Suivie de _t
Structures¶
/**
* @brief Structure d'un menu local
* @sa MenuSelect
*/
struct menu {
/** @brief Caractère utilisé pour l'item */
char choice;
/** @brief Description de l'item */
char *item;
};
Fonctions¶
Les fonctions définies dans une librairie de bas niveau pour du matériel (« driver ») DEVRAIENT utiliser les noms définis dans la fiche technique.
- Le nom DOIT être dans le format suivant : module_action_attribut
-
module signifie
- Le nom d'un objet ou de la librairie
-
action signifie :
- set, get, clear : Règle, obtient ou vide un registre
- read, write : Lis ou écris dans un fichier
- init : Fonction d’initialisation
- is : Vérifie un état
- setup : Fonction de configuration des ports (p. ex. : AVR)
-
attribut signifie
TODO
-
module signifie
- Le modificateur
staticDOIT être utilisé dans la déclaration d’une fonction avec une vue locale - DOIT contenir qu’un seul
return
Mis à jour par Patrice Nadeau il y a environ 18 heures · 202 révisions