Rumah > pembangunan bahagian belakang > C++ > Bagaimana Saya Boleh Mendapatkan Nama Kelas Semasa dalam C?

Bagaimana Saya Boleh Mendapatkan Nama Kelas Semasa dalam C?

Linda Hamilton
Lepaskan: 2024-11-07 21:32:03
asal
935 orang telah melayarinya

 How Can I Get the Current Class Name in C  ?

Makro Setara FUNGSI untuk Nama Kelas

Pembangun sering menghadapi keperluan untuk mengakses nama fungsi semasa menggunakan FUNGSI makro dalam C . Walau bagaimanapun, makro yang serupa untuk mengakses nama kelas tidak kelihatan serta-merta.

Penyelesaian Alternatif

Walaupun tiada padanan tepat FUNGSI untuk nama kelas, pendekatan alternatif boleh memberikan maklumat ini. Menggunakan typeid(*this).name() boleh digunakan, tetapi ia memberikan had dalam panggilan kaedah statik.

PRETTY_FUNCTION dan Macro Pihak Ketiga

Makro PRETTY_FUNCTION mengembalikan kedua-dua fungsi dan nama kelas. Walau bagaimanapun, penggunaannya adalah khusus untuk penyusun GCC.

Seseorang juga boleh memanfaatkan makro pihak ketiga, seperti makro METHOD_NAME dan CLASS_NAME, untuk mengekstrak kelas dan nama kaedah, seperti yang ditunjukkan dalam contoh kod di bawah:

inline std::string methodName(const std::string& prettyFunction) {
    ...
}

#define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__)

...

inline std::string className(const std::string& prettyFunction) {
    ...
}

#define __CLASS_NAME__ className(__PRETTY_FUNCTION__)
Salin selepas log masuk

Makro ini mengendalikan kerumitan menghurai kelas dan nama kaedah daripada __PRETTY_FUNCTION__, termasuk kes di mana tiada kelas.

Kesimpulan

Walaupun C tidak mempunyai persamaan langsung dengan FUNCTION untuk nama kelas, PRETTY_FUNCTION dan makro pihak ketiga menawarkan alternatif yang berdaya maju untuk mengakses kedua-dua kaedah dan nama kelas, memastikan kebolehselenggaraan dan kebolehbacaan kod dalam pelbagai senario.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Mendapatkan Nama Kelas Semasa dalam 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