問題タブ [preprocessor-meta-program]

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 投票する
3 に答える
291 参照

c++ - C++ 汎用プログラミングの機微

私が抱えている問題は、次のコードに示されています。

エラー:

私がエミュレートしようとしているパターンは、コード/ビルド レベルでプログラムを拡張することです ( nginxモジュールがコンパイル時に配線される方法とよく似ています)。ビルドに s を追加することで拡張可能 (プラグ可能) な拡張可能なコンパイル時構造を構築する必要があり#includeます。これにより、すべてのプラグインを含む一意の名前を持つ boost-mpl-vector が生成されます。したがって、が一意の終了名である場合、X_0、X_1、X_2 は、ベクトルに mpl-vectorが適用されているXため、途中で構築される名前です。push_back

boost:: preprocessorの抽象化が重要であることはわかっていますが、最終的にコンパイル時にモジュール化されるシステムの一部を試作しているため、まだ調査に時間を費やしたくありません。

というわけで、今後の参考までに

  1. 上記のエラーが表示されるのはなぜですか?
  2. 正しい生のプリプロセッサ パターンはどのように見えるべきか。
  3. 正しいブースト プリプロセッサ ライブラリ パターンはどのように見えますか。
0 投票する
2 に答える
479 参照

c# - メタプログラミング用の前処理言語が欲しい

PHP のような言語を探していますが、もっと簡潔に言えば、それを「テンプレート エンジン」と呼びたくなりましたが、それは間違った用語であると確信しています。正しい用語は何ですか? テキストプリプロセッサ?

とにかく、.NET コードの作成を支援するために使用したいので、.NET ベースにしたいと考えています。.NET ジェネリックは高速な数値コードの記述には適していないため (既知の回避策は面倒すぎて、私のニーズには制限されています)、C# コードを出力できる何らかの前処理言語を使用して数学ライブラリを記述したいと考えています。たとえば、さまざまなデータ型 (PointF、PointD、PointI など) から作成された一連の「Point」クラスを生成したいと思います。

あなたは人々に何を提案できますか?

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

c++ - C++ プリプロセッサのメタプログラミングはチューリング完全ですか?

C++ テンプレート メタプログラミングがチューリング完全であることは知っています。同じことがプリプロセッサのメタプログラミングにも当てはまりますか?

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

preprocessor - プリプロセッサによるファイル反復

ブーストのファイル再帰では、再帰を使用するファイルがインクルード パスにある必要があるというのは正しいですか?

ドキュメントのどこにも表示されませんが、これが当てはまると思われる問題をデバッグしました。これにより、これをボイラープレート コードを自動的に生成する手段として使用することは、ライブラリ ヘッダー ファイルがインクルード パスにない可能性があるため、ライブラリに使用する場合に多少制限されます。

コメントはありますか?

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

c++ - Vardiadic マクロで Variadic テンプレートを展開する (ターゲット関数から引数名を抽出する方法)

私は挑戦的でありながら単純な問題に苦しんでいます。次のようなターゲット関数があるとしましょう

そして、「抽出」したいのは変数名です(つまり、「arg1」、「arg2」)。たとえば、いくつかの前処理で変数のこの情報を取得するのは簡単です

複数の変数がある場合は、可変個引数マクロを使用することもできます

しかし、ターゲット関数から「抽出」する方法の手がかりがありません..たとえば、次のように可変個引数テンプレート手法を使用します

うまくいきません:もちろん、アンパックされた変数ではなく、「A...」を取得します...何かヒントはありますか?

ありがとう!注: C++11、gcc 4.8.1 を使用しています

0 投票する
0 に答える
525 参照

c++ - C++プリプロセッサで空白で区切られたトークンを解析するには?

プリプロセッサのメタプログラミングを行っていますが、C++ プリプロセッサに変換f(a b)する方法が必要です。とは の 2 つのトークンであるg(a,b)ため、それらを分離する方法を見つけることができるようです。ただし、何時間も作業した後でも、この問題の解決策はありません。abC++

boost::preprocessorこれらのライブラリが前処理プロセスで機能することを考えると、サードパーティのライブラリを含むことは歓迎されます。

さらに、任意のトークンを分離する方法はありますか? たとえば、 、、const T&に変換する必要があります。constT&

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

c++ - 前処理段階でC++関数の呼び出し元名を取得する方法

PERF_INSTRUMENTライブラリのマクロを使用する必要があります。PERF_INSTRUMENTこの計器ポイントの位置を出力する関数名として、ユーザーが提供する C スタイルの文字列が必要です。

でも、使うたびに関数名を書くのではなく 、perf ログに関数名が自動的に含まれるようPERF_INSTRUMENTに呼び出したいのです。__func__

しかし、ラムダ関数内に埋め込まれているため、__func__実際に使用すると返されます。operator()__func__

main()関数名をPERF_INSTRUMENTマクロに渡す方法はありますか。

MY CODE行の下のコードのみを変更できることに注意してください