Projet

Général

Profil

Actions

Macros et préprocesseur » Historique » Révision 15

« Précédent | Révision 15/17 (diff) | Suivant »
Patrice Nadeau, 2024-03-09 12:07


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

/**
* @name Nom des registres
*/
/** @{ */ 
/** @brief USART1 */
#define USART1 REG1
/** @brief USART2 */
#define USART2 REG2
/** @} */

USART1 = 0x0F;

Justification

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

Mis à jour par Patrice Nadeau il y a 10 mois · 15 révisions