問題タブ [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 投票する
4 に答える
1792 参照

c++ - プリプロセッサに、再定義で以前の定義を使用するように強制します

アップデート3

どうでも。私はちょっと私が探していたものを手に入れました。以下は、クラス内の一意の識別子を示しています。

アップデート2

ブーストプリプロセッサ

この機能を使用して、メッセージマップに似たものを実装します。

重要なのは、MAP_DECLごとに、マクロを2か所に展開する必要があるということです。

Boostプリプロセッサは、(理論的には)MAP_DECLをシーケンスに蓄積し、最後にそれをfunc()に展開できるようにする必要があります(同時にクラスフィールドを展開します)。


アップデート1

現在、Boostプリプロセッサライブラリを使用しています。私は現在、シーケンスに何かを追加する必要があるたびに、次のような新しいマクロ変数/定義を作成するのに行き詰まっています。

Boost Preprocessorシーケンスを拡張しようとしていますが、現時点ではこれを実行できません。


オリジナル

次のコードがあるとします

2行目に1行目のCURの値を使用させるにはどうすればよいですか?

0 投票する
14 に答える
141787 参照

macros - コンパイル時に #define の値を表示するにはどうすればよいですか?

私のコードが使用していると思われる Boost のバージョンを把握しようとしています。私はこのようなことをしたい:

#error BOOST_VERSION

ただし、プリプロセッサは BOOST_VERSION を展開しません。

実行時にプログラムから出力できることはわかっていますし、プリプロセッサの出力を見て答えを見つけられることもわかっています。コンパイル中にこれを行う方法があると便利だと思います。

0 投票する
3 に答える
1145 参照

c - プレーン C 用のプリプロセッサ メタプログラミング ライブラリ

boost::preprocessor単純な C プロジェクトで簡単に使用/組み込むことができる (おそらくそれほど高度ではない) に似たライブラリを知っている人はいますか? もちろん、ほとんど (すべて?) はCboost::preprocessorで記述した場合に使用できますが、ブーストのようなモンスターに依存しない基本的な機能のみを備えた小さなライブラリを好みます。

0 投票する
4 に答える
938 参照

.net - Boost Preprocessor library for generating a set of types based on a list of basic types e.g. PointI32, PointF32 etc. in C++/CLI

I am trying to figure out how to use the Boost.Preprocessor library http://www.boost.org/doc/libs/release/libs/preprocessor to unfold a "generic" type for different specific types. Below I will ask this for a simple point class example. Given:

I want to generate this type for different basic (POD) data types e.g.:

where PointF32 would be:

That is, based on a list of types:

I want to "unfold" the above type for these. Preferably with the "template" definition in a separate include file and not as a macro, to allow for easier debugging.

NOTE: I am not interested in hearing about C++ templates. I know how to use templates. But these are not useful in my case. As an example imagine these types are going be used from .NET in C#, but are being generated in C++/CLI. So please stick to the question.

The problem, of course, stems from the lack of template support in .NET and due to generics not being suitable to solve my problem.

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

c++ - C/C++ マクロ: 1 つのマクロでコードの 2 つの別々のセクションを生成する方法 (ブースト プリプロセッサ ライブラリ?)

クラス型とこれらのオブジェクトのコンストラクタ パラメータを定義して、マクロ呼び出しのリストから typedef のリストとオブジェクトのインスタンス化のリストを生成する方法または方法を探しています。

以下の (動作していない) コードのようになります。解決すべき問題は、マクロ呼び出しの 1 つのリストから 2 つの異なるリストを生成する方法です。これは、ブースト プリプロセッサ ライブラリ部分で解決する問題だと思いますが、どうすればよいかわかりました。

0 投票する
5 に答える
25172 参照

c++ - Boostを使用したD_WIN32_WINNTコンパイラの警告

このエラーをどうすればよいかわからない。Visual Studioの[プロジェクトのプロパティ]の下の[コマンドライン]オプションに追加-D_WIN32_WINNT=0x0501されましたが、認識されないというメッセージが表示され、警告が引き続き表示されます。

プリプロセッサ定義を追加する方法もわかりません。

1>_WIN32_WINNTまたは_WIN32_WINDOWSを適切に定義してください。次に例を示します
。1>-コンパイラのコマンドラインに-D_WIN32_WINNT=0x0501を追加します。または
1>-プロジェクトのプリプロセッサ定義に_WIN32_WINNT=0x0501を追加します。

0 投票する
4 に答える
19683 参照

c-preprocessor - C99 プリプロセッサのチューリングは完全ですか?

Boost プリプロセッサの機能を発見した後、私は疑問に思いました: C99 プリプロセッサのチューリングは完全ですか?

そうでない場合、資格がないために何が欠けていますか?

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

macros - Cプリプロセッサ、マクロ「オーバーロード」

ある種のマクロ「オーバーロード」を実行しようとしているので、MACRO(何か)はMACRO(何か、その他)とは異なる方法で展開されます。

ここから取得したスニペット(100%移植可能かどうかはわかりません)とBoost PPライブラリのいくつかの関数を使用して、それを機能させることができました:D

今、私がやりたい他の2つのことがまだ欠けています。

  1. (これは、解決しなくてもかまいません)「バリアント」とそれに対応する「出力」の数を取得すると、上記のようなコードが生成されるマクロを記述できると思います。上記の例を生成するには、TEMPLATE(3、function_A(...)、function_B(...)、function_C(...))のようなものを使用します。

  2. TEST()が引数なしで呼び出されるとどうなりますか?さて、VA_NARGSは1に展開されます。しかし、最初の引数は ""(何もありません)です。__VA_ARGS__この状況に対応するために「オーバーロード」関数を拡張するために、「ゼロ」引数を検出するか、「ヌル」引数と実際の引数を区別する方法を見つけようとしています。何か案は?

0 投票する
4 に答える
1959 参照

c++ - Cプリプロセッサマクロ:トークンが宣言されているかどうかを確認します

これは、Cプリプロセッサの専門家向けです。

enumいくつかの識別子のリストを使用して宣言し、後でswitchステートメントチェック中に識別子がリストに含まれているかどうかを宣言するにはどうすればよいですか?

必要なものの例:

Boostシーケンスを使用して、列挙型のコンマ区切りリストに展開することを考えましたが、シーケンスに特定のトークンが含まれているかどうかを後で確認するにはどうすればよいですか?

編集:私がブーストでできたことは:

それはあまり美しくありません、そして私は次のようなものを好みます:

しかし、どのようBOOST_PP_SEQ_CONTAINSに実装できますか?

0 投票する
3 に答える
906 参照

c++ - コンパイル時にboost :: functionアリティを取得していますか?

BOOST_PP_IFオブジェクトのアリティ (パラメーター数) に基づいて、ステートメントで決定を下す必要がありboost::functionます。これは可能ですか?

boost::function_types::function_arity私が探していることを実行時に実行します。コンパイル時に必要です。