質問

C++ ファイルを受け取り、テンプレート拡張パスを実行して、拡張されたテンプレートのインスタンス化を含む新しい C++ コードを生成するコンパイラまたはスタンドアロン プリプロセッサはありますか?

テンプレートがまだ新しくて実験的だった 90 年代半ばにこのようなツールがあったことを覚えています。プリプロセッサは、ネイティブ テンプレート サポートのないコンパイラでテンプレート プログラミングを行う方法でした。

これは、コンテキストを理解するためにコードの解析とトークン化が必要になる可能性が高いため、マクロ処理ステップよりもはるかに複雑です。

私の希望は、OpenCL コードを記述するときにそのようなツールを使用することです。 OpenCL は C++ ですが、テンプレートはサポートしていません。整数またはブール値のみの引数を使用するような単純なテンプレートでもテンプレートを作成でき、何らかのツールでファイルを事前解析してテンプレートの使用方法を調べて検索し、呼び出しを拡張して新しい C++ コードを提供できることを願っています。 OpenCLコンパイラ できる 理解する。

非常に限定されたツールであっても便利な場合はありますが、すべてのテンプレートの癖をサポートする必要はなく、複数のモジュールなどをサポートする必要さえありません。

代替案: #define どこでもマクロ..より醜く、安全でなく、効率も低く、汎用性も劣ります。

役に立ちましたか?

解決

コモーC++ C++ を C に「コンパイル」できます。OpenCL は C++ をサポートしていないため、これは目標に近いと思われます。これは C にはるかに近いものです。

他のヒント

そのようなツールはありません。テンプレートは言語の一部であり、プリプロセッサ パスではありません。他のコードと同様に、コンパイラによって処理されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top