web-dev-qa-db-fra.com

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

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

#if

et

#ifdef
58
Konrad

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 existence du symbole (quelle que soit sa valeur).

119
Greg Hewgill
#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)
37
ereOn