Quelle est la différence (le cas échéant) entre les deux instructions de contrôle de préprocesseur suivantes.
#if
et
#ifdef
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).
#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)