2

たとえばBOOST_PP_ITERATEBOOST_PP_ITERATIONGMan の answere here に見られるように、 と はプリプロセッサ マクロであり、パラメータはありません。それらが単純な定義ではなく、 なしでそのように使用される理由はあります()か?

4

2 に答える 2

4

一般に、関数のようなマクロを使用して、意図しないマクロの展開を防ぐことができます。
たとえば、次のマクロ呼び出しがあるとします。

BOOST_PP_CAT( BOOST_PP_ITERATION, _DEPTH )

そして、これが に拡張されることを期待していBOOST_PP_ITERATION_DEPTHます。
ただし、(機能しない) マクロのようなオブジェクトの場合は、連結によってBOOST_PP_ITERATIONトークンが生成される前に独自の定義に展開 されます。BOOST_PP_ITERATION_DEPTH

于 2011-03-31T13:08:06.397 に答える
1

おそらく、それらは操作を実行するためです。したがって、それらの使用法は、定数を使用するだけでなく、実際に何かを呼び出していることを明確にする必要があります。

于 2011-03-31T11:59:42.297 に答える