0

ライブラリを使用すると、次のboost preprocessorようなことができます。

#define ARRAY (3, (a, b, c))
BOOST_PP_ARRAY_PUSH_BACK(ARRAY, d) // this expands to a, b, c, d

しかし、どうすればこれを複数回行うことができますか?push_backコードのさまざまな部分で複数回、結果を表示したいとしますか?

次のコードは単に出力しdummyます:

#include <boost/preprocessor.hpp>

#include <vector>
#include <algorithm>

#define ARRAY (1, (dummy))

BOOST_PP_ARRAY_PUSH_BACK(ARRAY, 1)
BOOST_PP_ARRAY_PUSH_BACK(ARRAY, 1)
BOOST_PP_ARRAY_PUSH_BACK(ARRAY, 1)

int main()
{
    std::cout << BOOST_PP_ARRAY_ENUM(ARRAY);
    return 0;
}
4

1 に答える 1

2

BOOST_PP_ARRAY_PUSH_BACKARRAY;を実際に変更するわけではありません。ARRAY新しい要素が追加されたに単純に展開されます。したがって、たとえば、次のようになります。

#define ARRAY (1, (dummy))

これ:

BOOST_PP_ARRAY_PUSH_BACK(ARRAY, 1)

次のように展開します。

(2, (dummy, 1))

ただし、ARRAY次のように拡張されます。

(1, (dummy))

ARRAYマクロ置換を介しての置換リストを変更することはできません。

于 2014-07-15T22:22:36.863 に答える