10

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

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

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

私の希望は、OpenCL コードを記述するときにそのようなツールを使用することです。 OpenCLは C++ ですが、テンプレートをサポートしていません。整数またはブールのみの引数を持つような単純なものであっても、テンプレートを作成し、ファイルを事前に解析してテンプレートの使用を見つけて呼び出しを展開し、新しい C++ コードを提供するツールを作成できることを願っています。 OpenCL コンパイラ理解できます。

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

別の方法:#defineどこにでもあるマクロ.. 醜く、安全ではなく、効率が悪く、汎用性が低くなります。

4

3 に答える 3

10

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

于 2009-07-16T19:48:35.020 に答える
0

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

于 2009-07-16T19:33:33.427 に答える