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__)
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!