問題タブ [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.
c++ - Boost Preprocessor を使用してコンマを複数回出力するにはどうすればよいですか
クラスの複数のバリエーションに展開するには、可変引数マクロを使用する必要があります。マクロ入力に基づいて異なる名前を付ける必要があるため、単純にテンプレートを使用することはできません。問題は、コンマ ( ) 記号を展開できないこと,
と、クラスに複数のパラメーターを取る関数があることです (そのためにはコンマ記号を使用する必要があります)。
boost
コンマに展開されるマクロを提供しますBOOST_PP_COMMA()
が、ループ構成の外でのみ機能します。問題は、BOOST_PP_COMMA()
一度展開されてからカンマとして扱われ、その時点でプログラムが中断することだと思います。
問題を説明するために、変数の数のパラメーターを取り、それに与えられたパラメーターの数に等しい数のコンマを生成するマクロ関数があるとします。単純な解決策は次のとおりです。
ただし、コンマが展開され、マクロがパラメーターを分割していると見なすため、これによりさまざまなエラーが発生します。
この問題を回避する方法はありますか?
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
c++ - BOOST_PP_IF と BOOST_PP_LPAREN を組み合わせるにはどうすればよいですか?
条件付きでマクロを "( a" または "b )" に展開しようとしていますが、単純な方法では、使用しているコンパイラ (Microsoft C/C++ および NDK コンパイラ) のいずれでも機能しません。 )。例:
私は何を間違っていますか?
c++ - 可変個引数マクロに渡されたマクロ引数の数をカウントするにはどうすればよいですか?
私はすでにほとんどそこにいます:
-E
GCC でフラグを指定してこれを実行すると、次のように出力されます
3 2 1 1
私が必要とするのは:
3 2 1 0
ここで何が間違っていますか?私は を使用するつもりはboost preprocessor
ありませんが、ソリューションを可変長にする必要があります。
これを機能させる方法はありますか?
c++ - 最初のパラメーターを除くすべてを可変個引数マクロに展開するにはどうすればよいですか?
MAC(...)
渡された最初の引数を除くすべてに展開されるマクロが必要です。どうすればこれを達成できますか?
__VA_ARGS__
私の最初の考えは、を aに変換してから操作BOOST_PP_TUPLE
を行うことでしたPOP_FRONT
:
しかし、これは単純に次のように展開されます
BOOST_PP_TUPLE_POP_FRONT((1,2,3))
BOOST_PP_EXPAND
マクロを追加してみました:
しかし、私は同じ結果を得ます。私が欲しいのはの出力です
2、3
どうすればこれを達成できますか?
テンプレートを使用することはオプションではなく、他のライブラリやツール ( 以外boost
) を使用することもできません。
c++ - カスタム マクロを使用して boost::fusion::map (およびその他) を構築する
各クラスが boost::fusion::map 内に持つすべてのシグナルを含む特性クラスがあります。
例:
この種の特性の特殊化が頻繁に必要になるため、次の架空の例のように、タイピングを節約できるマクロが必要です。
CONSTRUCT_EVENTS
そのようなマクロをどのように実装できますか? 出発点として、Boost Preprocessor を見てBOOST_FUSION_ADAPT_STRUCT
、次に Boost Preprocessor を調べましたが、後者はまだ使用していないので、誰かが私を案内してくれることを願っています。
c++ - boost::preprocessor を使用してシーケンスを解凍するには?
boost::preprocessor を使用して一連のペアを解凍する方法は?
たとえば、次のようなシーケンスがあります(カンマは関係ありません)
に変換したい
と
のようなマクロを使用して
i
インデックスはどこですか。