Menyingkap Tujuan __gxx_personality_v0
Apabila menyusun atur cara C berdiri bebas dengan gcc, seseorang mungkin menghadapi ralat pemaut yang berkaitan dengan simbol yang tidak ditentukan "__gxx_personality_v0." Simbol ini berada dalam libstdc , yang tiada dalam persekitaran berdiri bebas. Menambah definisi "void *__gxx_personality_v0;" menyelesaikan isu itu, tetapi memahami tujuannya tetap penting.
__gxx_personality_v0 memainkan peranan penting dalam menyusun jadual. Jadual ini boleh dilihat dalam output pemasangan dan berfungsi sebagai asas untuk pengendalian pengecualian. Seperti yang ditakrifkan oleh Itanium C ABI, __gxx_personality_v0 berfungsi sebagai Rutin Keperibadian, komponen kritikal dalam pelepasan pengecualian.
"Keajaiban" di sebalik resolusinya sebagai penunjuk kekosongan NULL global berpunca daripada ketiadaan balingan pengecualian. Jika pengecualian berlaku, tingkah laku simbol akan menjadi jelas. Untuk mengelakkan isu sedemikian, melumpuhkan pengecualian dengan "-fno-exceptions" atau memaut dengan g (yang secara automatik menambah "-lstdc ") menjadi perlu apabila pengecualian digunakan.
Atas ialah kandungan terperinci Mengapakah `__gxx_personality_v0` Diperlukan dalam Kompilasi C, dan Bagaimana Ia Berkaitan dengan Pengendalian Pengecualian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!