Projet

Général

Profil

Macros et préprocesseur » Historique » Version 20

Patrice Nadeau, 2025-03-23 10:50

1 5 Patrice Nadeau
# Macros et préprocesseur
2 4 Patrice Nadeau
Directives du préprocesseur gcc.
3 1 Patrice Nadeau
4 8 Patrice Nadeau
1. Les macros ne devant plus être utilisées, DOIVENT générer un message lors de la compilation avec *#pragma GCC poison*
5 3 Patrice Nadeau
6 1 Patrice Nadeau
    > Dans ce cas, la documentation doit indiquer le substitut à utiliser
7 18 Patrice Nadeau
    > Pour la définition d’une valeur entière signée (int), un `enum` DOIT être utilisé.
8 12 Patrice Nadeau
1. Définition conditionnel : Utiliser une forme évitant les répétitions.
9 8 Patrice Nadeau
1. Macros *#warning* et *#error* : Utilisées pour afficher des avertissements ou des erreurs lors de la compilation.
10 1 Patrice Nadeau
11 6 Patrice Nadeau
    > N’est pas documenté dans Doxygen.
12
13 8 Patrice Nadeau
1. Un *#define* est utilisé pour remplacer une valeur au moment de la compilation
14 6 Patrice Nadeau
15 8 Patrice Nadeau
    > Pour la définition d'une valeur « integer », un *enum* DOIT être utilisé.
16 7 Patrice Nadeau
17 1 Patrice Nadeau
## Exemple
18
```c
19
/**
20 4 Patrice Nadeau
* @brief MACRO1
21
* @deprecated Utiliser NEWMACRO à la place
22
* @since Version x.x.xx
23
*/
24
#define MACRO1 43
25
#pragma GCC poison MACRO1
26
27 10 Patrice Nadeau
/** @brief Défini selon la macro *FEATURE_ONE* */
28 4 Patrice Nadeau
const char BLUE =
29 15 Patrice Nadeau
  #if defined (FEATURE_ONE)
30 4 Patrice Nadeau
    '1'
31
  #else
32
    '0'
33
  #endif
34
;
35
36 11 Patrice Nadeau
#if !defined (usart_AVR)
37 4 Patrice Nadeau
    #error "__FILE_NAME__ n'est pas supporté sur ce AVR !"
38
#endif
39
40
/** @brief USART1 */
41
#define USART1 REG1
42 1 Patrice Nadeau
```
43
44
## Justification
45 2 Patrice Nadeau
• [Linux kernel coding style](https://www.kernel.org/doc/html/v4.10/process/coding-style.html#naming)
46
• [GNU Coding Standards](https://www.gnu.org/prep/standards/html_node/Writing-C.html#Writing-C)
47
• [Embedded C Coding Standard](https://barrgroup.com/embedded-systems/books/embedded-c-coding-standard)
48 1 Patrice Nadeau
• Correspondance avec la fiche technique (datasheet)