C テンプレートのインスタンス化されたコードの確認
C では、関数またはクラスのコンパイラーによって生成されたコードを調べると有益な場合がありますテンプレート。たとえば、次のテンプレートを考えてみましょう:
<code class="cpp">template <class T> T add(T a, T b) { return a + b; }</code>
add
可視性を実現するコンパイラ オプション
これを実現する 1 つの方法は、Clang で -Xclang -ast-print -fsyntax-only オプションを使用することです。このオプションは、インスタンス化されたテンプレートの抽象構文ツリー (AST) を出力するようにコンパイラーに指示します。
使用例
次の内容を含む test.cpp という名前のテスト ファイルを作成しましょう。次のコード:
<code class="cpp">template <class T> T add(T a, T b) { return a + b; } void tmp() { add<int>(10, 2); }</code>
int 特殊化のインスタンス化されたコードを表示するには、次のコマンドを実行します:
$ clang++ -Xclang -ast-print -fsyntax-only test.cpp
Clang Output
Clang バージョン 5.0 以降の場合、出力は次のようになります。
template <class T> T add(T a, T b) { return a + b; } template<> int add<int>(int a, int b) { return a + b; } void tmp() { add<int>(10, 2); }
この出力には、元のテンプレートとそれに続く特殊な add
以上がC テンプレートのインスタンス化されたコードを表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。