Justification sur coup de pouce.Préprocesseur à l'aide de macros au lieu d'une simple définit?
-
14-11-2019 - |
Question
Par exemple BOOST_PP_ITERATE
et BOOST_PP_ITERATION
, comme on le voit sur GMan de answere ici, sont des macros du préprocesseur, sans paramètres.Est-il une raison pour laquelle ils ne sont pas de simples définit et utilisé comme tel, sans ()
?
La solution
En général, la fonction comme macro peut être utilisée pour empêcher involontaire macro
d'expansion.
Par exemple, en supposant que nous avons appel de macro:
BOOST_PP_CAT( BOOST_PP_ITERATION, _DEPTH )
et nous prévoyons que ce sera étendu à d' BOOST_PP_ITERATION_DEPTH
.
Toutefois, si BOOST_PP_ITERATION
est un objet comme les(non-fonctionnel), macro,
il sera étendu à sa propre définition avant le jeton
BOOST_PP_ITERATION_DEPTH
est généré par concaténation.
Autres conseils
Sans doute parce qu'ils effectuent des opérations:par conséquent, leur utilisation devrait indiquer clairement que vous êtes réellement invoquant quelque chose et pas juste à l'aide de quelques constantes.