Je me demande s'il est possible d'avoir un préprocesseur OR ou instruction AND? J'ai ce code là où je veux courir sous _DEBUG
ou _UNIT_TEST
Mots clés(?).
Ce que je veux, c'est quelque chose comme ceci:
#if _DEBUG || _UNIT_TEST
//Code here
#endif
Si cela n'est pas possible, existe-t-il une solution de contournement pour obtenir la même chose sans avoir à dupliquer le code à l'aide d'un #elseif
?
#if defined _DEBUG || defined _UNIT_TEST
//Code here
#endif
Vous pouvez également utiliser les opérateurs AND et NOT. Par exemple:
#if !defined _DEBUG && defined _UNIT_TEST
//Code here
#endif
#if
Prend toute expression C++ de type intégral (1) que le compilateur parvient à évaluer au moment de la compilation. Donc oui, vous pouvez utiliser ||
Et &&
, Tant que vous utilisez defined(SOMETHING)
pour tester la définition.
(1): eh bien, c'est un peu plus restreint que ça; pour les détails, voir les restrictions ici (à "avec ces restrictions supplémentaires" ).
#if defined(_DEBUG) || defined(_UNIT_TEST)
//Code here
#endif
Pour mémoire, c'est #Elif
, ne pas #elseif
.