首頁 >後端開發 >C++ >如何查看C模板的實例化程式碼?

如何查看C模板的實例化程式碼?

Linda Hamilton
Linda Hamilton原創
2024-10-27 15:53:29267瀏覽

How to View the Instantiated Code of C   Templates?

查看C 模板的實例化程式碼

在C 中,檢查編譯器為函數或類別生成的程式碼可能是有益的模板。例如,考慮以下模板:

<code class="cpp">template <class T> T add(T a, T b) {
    return a + b;
}</code>

當使用特定類型呼叫時,例如add(10, 2),我們可能想要查看編譯器為此特定創建的函數

實現可見性的編譯器選項

實現此目的的一種方法是使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn