Project

General

Profile

Actions

Macros et préprocesseur » History » Revision 16

« Previous | Revision 16/17 (diff) | Next »
Patrice Nadeau, 2024-03-09 14:28


Macros et préprocesseur

Directives du préprocesseur gcc.

Règles

  1. Comportent au maximum 31 caractères

  2. Commence par une lettre

  3. Si plusieurs mots sont utilisés, ils sont séparées par des traits de soulignement

  4. 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), un enum DOIT être utilisé.

  5. Définition conditionnel : Utiliser une forme évitant les répétitions.

  6. Macros #warning et #error : Utilisées pour afficher des avertissements ou des erreurs lors de la compilation.

    N’est pas documenté dans Doxygen.

  7. 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é.

Exemple

/**
* @brief MACRO1
* @deprecated Utiliser NEWMACRO à la place
* @since Version x.x.xx
*/
#define MACRO1 43
#pragma GCC poison MACRO1

/** @brief Défini selon la macro *FEATURE_ONE* */
const char BLUE =
  #if defined (FEATURE_ONE)
    '1'
  #else
    '0'
  #endif
;

#if !defined (usart_AVR)
    #error "__FILE_NAME__ n'est pas supporté sur ce AVR !"
#endif

#if !defined (test)
    #warning "test n'est pas défini!"
#endif

/** @brief USART1 */
#define USART1 REG1

Justification

Linux kernel coding style
GNU Coding Standards
Embedded C Coding Standard
• Correspondance avec la fiche technique (datasheet)

Updated by Patrice Nadeau 9 months ago · 16 revisions