Projet

Général

Profil

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]]