Cara Mendapatkan Nama Jenis dalam Templat C untuk Pelaporan Ralat Parse
Apabila menghadapi ralat semasa menghuraikan fail data teks, adalah penting untuk menyediakan mesej bermaklumat kepada bukan pengaturcara, menyatakan isu dan lokasi fail data tempat ralat berlaku. Walaupun mengekstrak fail, bahagian dan nama kunci adalah mudah, mendapatkan jenis data yang fungsi templat dihuraikan tidak serta-merta.
Untuk menangani keperluan ini, dua pendekatan boleh dipertimbangkan:
Pengenalpastian Jenis Masa Jalan dengan typeid
Pendekatan ini menggunakan operator typeid untuk mendapatkan semula nama jenis semasa masa jalan. Walau bagaimanapun, ia mungkin dikenakan overhed masa jalan jika pengecualian dilemparkan, yang tidak diingini untuk kod yang dilaksanakan dengan kerap.
Makros Nama Jenis Kompilasi-Masa
Pendekatan alternatif melibatkan penentuan makro nama jenis dalam fail pengepala yang berasingan:
#pragma once template<typename T> const wchar_t *GetTypeName(); #define DEFINE_TYPE_NAME(type, name) \ template<>const wchar_t *GetTypeName<type>(){return name;}
Makro ini boleh digunakan untuk menentukan nama jenis untuk semua jenis yang dikehendaki dalam fail pengepala masing-masing. Pemaut akan secara automatik menyelesaikan pengkhususan templat yang sesuai berdasarkan jenis yang ditentukan, atau membuang ralat jika jenis yang diperlukan tiada.
Pendekatan masa kompilasi ini menghapuskan sebarang overhed masa jalan dan memastikan semua nama jenis yang diperlukan ditakrifkan pada masa penyusunan. Ia juga membolehkan penambahan jenis baharu dengan mudah pada masa hadapan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nama Jenis dalam Templat C untuk Pelaporan Ralat Parse?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!