Projet

Général

Profil

Wiki » Historique » Version 185

Patrice Nadeau, 2026-01-18 20:01

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