Outils pour utilisateurs

Outils du site


lang:c:preprocesseur

Ceci est une ancienne révision du document !


Convertir un nombre en chaîne de caractères

#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)

Exemple d'utilisation :

#define GCCVERSION STR(__GNUC__) "." STR(__GNUC_MINOR__) "." STR(__GNUC_PATCHLEVEL__)

C Preprocessor_ concatenate int to string - Stack Overflow Archive du 28/03/2011 le 17/10/2019

Ecrire un commentaire dans une macro multi lignes

#define SOME_BIG_MACRO(input)\
  SOME_FUNCTION_CALL()  /* this does... */ \
  SOME_OTHER_FUNCTION_CALL()

Risque du coding style (espace avant parenthèse)

Si on souhaite faire passer des arguments à la macro, il est nécessaire que la parenthèse touche le nom de la macro. Sinon, le préprocesseur interprétera la parenthèse comme le début du remplacement.

#define FONCTION (ARG1, ARG2) ARG1 + ARG2s
 
int main()
{
  FONCTION (1, 2);
  // Interprétation erronée à cause de l'espace après FONCTION lors de la définition de la macro.
  // (ARG1, ARG2) ARG1 + ARG2s(1, 2);
}
lang/c/preprocesseur.1583520624.txt.gz · Dernière modification : 2020/03/06 19:50 de root