58 votes

Différence entre les directives du préprocesseur #if et #ifdef

Quelle est la différence (le cas échéant) entre les deux instructions de contrôle du préprocesseur suivantes.

 #if
 

et

 #ifdef
 

121voto

Greg Hewgill Points 356191

Vous pouvez démontrer la différence en faisant:

 #define FOO 0
#if FOO
  // won't compile this
#endif
#ifdef FOO
  // will compile this
#endif
 

#if vérifie la valeur du symbole, tandis que #ifdef vérifie l' existence du symbole (quelle que soit sa valeur).

38voto

ereOn Points 18624
 #ifdef FOO
 

est un raccourci pour:

 #if defined(FOO)
 

#if peut également être utilisé pour d'autres tests ou pour des conditions de préprocesseur plus complexes.

 #if defined(FOO) || defined(BAR)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X