0

MAC(...)渡された最初の引数を除くすべてに展開されるマクロが必要です。どうすればこれを達成できますか?

__VA_ARGS__私の最初の考えは、を aに変換してから操作BOOST_PP_TUPLEを行うことでしたPOP_FRONT:

#define MAC(...)\
  BOOST_PP_TUPLE_POP_FRONT(BOOST_PP_VARIADIC_TO_TUPLE(__VA_ARGS__))
MAC(1,2,3)

しかし、これは単純に次のように展開されます

BOOST_PP_TUPLE_POP_FRONT((1,2,3))

BOOST_PP_EXPANDマクロを追加してみました:

#define MAC(...)\
  BOOST_PP_EXPAND(\
    BOOST_PP_TUPLE_POP_FRONT BOOST_PP_VARIADIC_TO_TUPLE(__VA_ARGS__))
MAC(1,2,3)

しかし、私は同じ結果を得ます。私が欲しいのはの出力です

2、3

どうすればこれを達成できますか?

テンプレートを使用することはオプションではなく、他のライブラリやツール ( 以外boost) を使用することもできません。

4

1 に答える 1

4

簡単な答えを試しましたか?

#define Y(ignore, ...) __VA_ARGS__
#define X(...) Y(__VA_ARGS__)
于 2014-08-10T23:55:01.823 に答える