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 ()?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top