Projet

Général

Profil

Wiki » Historique » Révision 186

Révision 185 (Patrice Nadeau, 2026-01-18 20:01) → Révision 186/213 (Patrice Nadeau, 2026-01-18 20:01)

# 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** américain**, maximum de **31** caractères : 
     * 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 

 

 ## 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>). 

 ### Exemple 
 ```c 
 #ifndef _test_h 
 #define _test_h 


 [[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 (/*... */) : Commentaires du code 
     * Javadoc (/** */, @) : Commentaires devant apparaître dans la documentation (Doxygen) 
         > La documentation est partie intégrante du code 
         1. Les « décorations » (gras, italique, etc.) sont faites avec la syntaxe Markdown 
             * Italique : `∗` ou `_` 
             * Gras : `∗∗` ou `__` 
         1. Les commentaires suivants peuvent aussi être utilisés 
             * `@todo` 
             * `@bug` 

 [[Identifiants]] 

 [[Macros et préprocesseur]] 

 [[Énumérations]] 

 [[Typedef]] 

 [[Variables]] 

 [[Structures]] 

 [[Fonctions]] 

 [[Librairies]] 

 [[Atmel AVR]]