Frage

Beispielsweise BOOST_PP_ITERATE und BOOST_PP_ITERATION, wie auf Gmans Antwort zu sehen ist hier, sind Präprozessor-Makros ohne Parameter.Gibt es einen Grund, warum sie nicht nur einfach definiert und als solche ohne verwendet werden ()?

War es hilfreich?

Lösung

Im Allgemeinen kann eine Funktion wie ein Makro verwendet werden, um unbeabsichtigte Makros zu verhindern Expansion.
Angenommen, wir haben den folgenden Makroaufruf:

BOOST_PP_CAT( BOOST_PP_ITERATION, _DEPTH )

und wir erwarten, dass dies erweitert wird in BOOST_PP_ITERATION_DEPTH.
Wenn jedoch BOOST_PP_ITERATION ist ein Objekt wie ein (nicht funktionierendes) Makro, es wird vor dem Token auf eine eigene Definition erweitert BOOST_PP_ITERATION_DEPTH wird durch Verkettung erzeugt.

Andere Tipps

Vermutlich, weil sie Operationen ausführen:folglich sollte ihre Verwendung deutlich machen, dass Sie tatsächlich sind aufrufen etwas und nicht nur eine Konstante verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top