查看C 模板的實例化程式碼
在C 中,檢查編譯器為函數或類別生成的程式碼可能是有益的模板。例如,考慮以下模板:
<code class="cpp">template <class T> T add(T a, T b) { return a + b; }</code>
當使用特定類型呼叫時,例如add
實現可見性的編譯器選項
實現此目的的一種方法是使用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 輸出
對於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中文網其他相關文章!