Bagaimana untuk Melihat Kod Instantiated Templat C?

Linda Hamilton
Lepaskan: 2024-10-27 15:53:29
asal
148 orang telah melayarinya

How to View the Instantiated Code of C   Templates?

Melihat Kod Instantiated Templat C

Dalam C , ia boleh memberi manfaat untuk memeriksa kod yang dijana oleh pengkompil untuk fungsi atau kelas templat. Sebagai contoh, pertimbangkan templat berikut:

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

Apabila dipanggil dengan jenis tertentu, seperti add(10, 2), kami mungkin mahu melihat fungsi yang pengkompil cipta untuk khusus ini pengkhususan.

Pilihan Pengkompil untuk Mencapai Keterlihatan

Satu cara untuk mencapainya ialah dengan menggunakan pilihan -Xclang -ast-print -fsyntax-only dengan Clang. Pilihan ini mengarahkan pengkompil untuk mencetak pepohon sintaks abstrak (AST) bagi templat yang diwujudkan.

Contoh Penggunaan

Mari kita buat fail ujian bernama test.cpp yang mengandungi kod berikut:

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

void tmp() {
    add<int>(10, 2);
}</code>
Salin selepas log masuk

Untuk melihat kod instantiated untuk pengkhususan int, jalankan arahan berikut:

$ clang++ -Xclang -ast-print -fsyntax-only test.cpp
Salin selepas log masuk

Clang Output

Untuk Clang versi 5.0 atau lebih baru, output akan kelihatan seperti ini:

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);
}
Salin selepas log masuk

Output ini menunjukkan templat asal, diikuti dengan add fungsi yang telah digunakan oleh pengkompil.

Atas ialah kandungan terperinci Bagaimana untuk Melihat Kod Instantiated Templat C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!