問題タブ [boost-preprocessor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
501 参照

c++ - Boost Preprocessor を使用してコンマを複数回出力するにはどうすればよいですか

クラスの複数のバリエーションに展開するには、可変引数マクロを使用する必要があります。マクロ入力に基づいて異なる名前を付ける必要があるため、単純にテンプレートを使用することはできません。問題は、コンマ ( ) 記号を展開できないこと,と、クラスに複数のパラメーターを取る関数があることです (そのためにはコンマ記号を使用する必要があります)。

boostコンマに展開されるマクロを提供しますBOOST_PP_COMMA()が、ループ構成の外でのみ機能します。問題は、BOOST_PP_COMMA()一度展開されてからカンマとして扱われ、その時点でプログラムが中断することだと思います。

問題を説明するために、変数の数のパラメーターを取り、それに与えられたパラメーターの数に等しい数のコンマを生成するマクロ関数があるとします。単純な解決策は次のとおりです。

ただし、コンマが展開され、マクロがパラメーターを分割していると見なすため、これによりさまざまなエラーが発生します。

この問題を回避する方法はありますか?

0 投票する
2 に答える
1469 参照

c++ - BOOST_PP_IF 内にコンマを含むマクロを展開する方法

以前に次の質問をしましたが、この特定のケースでは解決策がうまくいかないようです。

Boost Preprocessor を使用してコンマを複数回出力するにはどうすればよいですか

コンマを含むマクロを条件付きで展開しようとしています。問題を示す例を次に示します。

これは次のように展開されます

BOOST_PP_IIF BOOST_PP_IIF BOOST_PP_IIF BOOST_PP_IIF

拡張する必要がある場合

0,0 1,1 2,2 3,3

0 投票する
1 に答える
418 参照

c++ - BOOST_PP_IF と BOOST_PP_LPAREN を組み合わせるにはどうすればよいですか?

条件付きでマクロを "( a" または "b )" に展開しようとしていますが、単純な方法では、使用しているコンパイラ (Microsoft C/C++ および NDK コンパイラ) のいずれでも機能しません。 )。例:

私は何を間違っていますか?

0 投票する
1 に答える
819 参照

c++ - 可変個引数マクロに渡されたマクロ引数の数をカウントするにはどうすればよいですか?

私はすでにほとんどそこにいます:

-EGCC でフラグを指定してこれを実行すると、次のように出力されます

3 2 1 1

私が必要とするのは:

3 2 1 0

ここで何が間違っていますか?私は を使用するつもりはboost preprocessorありませんが、ソリューションを可変長にする必要があります。

これを機能させる方法はありますか?

0 投票する
1 に答える
681 参照

c++ - 最初のパラメーターを除くすべてを可変個引数マクロに展開するにはどうすればよいですか?

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

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

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

BOOST_PP_TUPLE_POP_FRONT((1,2,3))

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

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

2、3

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

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

0 投票する
1 に答える
141 参照

c++ - カスタム マクロを使用して boost::fusion::map (およびその他) を構築する

各クラスが boost::fusion::map 内に持つすべてのシグナルを含む特性クラスがあります。

例:

この種の特性の特殊化が頻繁に必要になるため、次の架空の例のように、タイピングを節約できるマクロが必要です。

CONSTRUCT_EVENTSそのようなマクロをどのように実装できますか? 出発点として、Boost Preprocessor を見てBOOST_FUSION_ADAPT_STRUCT、次に Boost Preprocessor を調べましたが、後者はまだ使用していないので、誰かが私を案内してくれることを願っています。

0 投票する
2 に答える
1392 参照

c++ - boost::preprocessor を使用してシーケンスを解凍するには?

boost::preprocessor を使用して一連のペアを解凍する方法は?

たとえば、次のようなシーケンスがあります(カンマは関係ありません)

に変換したい

のようなマクロを使用して

iインデックスはどこですか。