Mendapatkan Maklumat Kelas dalam C : KELAS Makro
Dalam C , KELAS makro menyediakan cara mudah untuk mendapatkan semula nama kelas semasa, sama seperti cara FUNCTION menyediakan akses kepada nama fungsi.
CLASS Pelaksanaan Makro
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa KELAS bukanlah makro yang ditakrifkan secara rasmi dalam standard C. Sebaliknya, pelaksanaannya mungkin berbeza-beza bergantung pada pengkompil dan platform.
Satu pelaksanaan biasa yang ditakrifkan untuk gcc ialah PRETTY_FUNCTION makro yang merangkumi nama kelas bersama-sama dengan nama fungsi. Namun begitu, makro ini tidak diseragamkan dan tingkah lakunya boleh berbeza-beza merentas penyusun yang berbeza.
Penyelesaian Alternatif
Dalam senario di mana mudah alih merentas penyusun adalah kritikal, taip(*ini ).name() boleh digunakan untuk mendapatkan nama kelas yang layak, termasuk ruang nama. Walau bagaimanapun, kaedah ini hanya terpakai apabila penunjuk ini sah wujud, yang mungkin tidak berlaku dalam panggilan kaedah statik.
Makro Khusus Platform
Sesetengah pengkompil mungkin menyediakan makro khusus platform untuk mendapatkan semula maklumat kelas. Sebagai contoh, Microsoft Visual Studio menyediakan atribut __declspec(dllexport) dan __declspec(dllimport), yang boleh digunakan untuk mengekstrak nama kelas dalam cara merentas platform.
Makro Tersuai untuk Kelas dan Kaedah Nama
Untuk mencapai pendekatan yang lebih generik dan mudah alih, makro tersuai boleh ditakrifkan untuk mengekstrak nama kelas dan kaedah daripada PRETTY_FUNCTION atau typeid(*this).name():
#define __CLASS_NAME__ className(__PRETTY_FUNCTION__) #define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__)
Makro ini menggunakan fungsi pembantu untuk menghuraikan maklumat yang diperlukan daripada __PRETTY_FUNCTION__, memastikan keserasian merentas pengkompil dan platform.
Atas ialah kandungan terperinci Bagaimana Anda Boleh Mendapatkan Maklumat Kelas dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!