Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menghancurkan Nama Jenis Mangled GCC daripada typeid.name()?

Bagaimanakah Saya Boleh Menghancurkan Nama Jenis Mangled GCC daripada typeid.name()?

Barbara Streisand
Lepaskan: 2024-11-26 06:04:09
asal
727 orang telah melayarinya

How Can I Demangle GCC's Mangled Type Names from typeid.name()?

Demangling Unmalled Type Names dengan typeid.name() dalam GCC

Apabila menggunakan typeid.name() untuk mendapatkan semula nama jenis , penyusun yang berbeza mungkin memberikan hasil yang berbeza-beza. Sebagai contoh, GCC dikenali untuk mengembalikan nama "hancur", manakala Visual C menyampaikan nama yang tidak hancur.

Percanggahan ini berpunca daripada fakta bahawa nilai pulangan typeid.name() adalah ditakrifkan pelaksanaan. Mengikut piawaian C, setiap pelaksanaan mempunyai budi bicara untuk menentukan cara mewakili nama jenis.

Dalam kes GCC, nama yang dikembalikan oleh typeid.name() membawa maklumat tambahan yang dikenali sebagai "nama hancur. " Format ini termasuk hiasan yang berfungsi untuk tujuan pengkompil dalaman. Untuk mendapatkan nama jenis unmalled, anda boleh menggunakan perintah c filt atau fungsi __cxa_demangle.

c filt 4Blah

Output: struct Blah

__cxa_demangle("4Blah", nullptr, nullptr, nullptr)

Output: Blah

Dengan menggunakan alatan ini, anda boleh demangle nama jenis yang dihias dan mendapatkan semula representasi yang tidak hancur yang diingini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghancurkan Nama Jenis Mangled GCC daripada typeid.name()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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