Rumah > pembangunan bahagian belakang > C++ > Bolehkah saya Mendapatkan Alamat Fungsi Perpustakaan Standard dalam C?

Bolehkah saya Mendapatkan Alamat Fungsi Perpustakaan Standard dalam C?

Patricia Arquette
Lepaskan: 2024-12-25 00:13:11
asal
742 orang telah melayarinya

Can I Get the Address of a Standard Library Function in C  ?

Bolehkah saya Mengambil Alamat Fungsi yang Ditakrifkan dalam Perpustakaan Standard?

Gambaran Keseluruhan

Bolehkah atur cara C mengambil alamat fungsi yang ditakrifkan dalam perpustakaan standard, dan jika ya, dalam keadaan apa?

Jawapan Ringkas

Tidak, tidak secara umum.

Penjelasan

Menurut [namespace.std], membentuk penuding kepada fungsi perpustakaan standard ialah tingkah laku yang tidak ditentukan melainkan fungsi itu ditetapkan sebagai boleh dialamatkan. Ini terpakai kepada fungsi ahli juga.

Panggilan Pertama ke std::invoke

std::invoke(std::boolalpha, std::cout);
Salin selepas log masuk

Dalam contoh ini, std::boolalpha ialah fungsi boleh alamat yang ditetapkan oleh [fmtflags.manip] . Oleh itu, baris ini dibentuk dengan baik dan bersamaan dengan:

std::cout.setf(std::ios_base::boolalpha);
Salin selepas log masuk

Panggilan Kedua ke std::invoke

std::invoke(static_cast<ctype_func>(std::tolower), 'A');
Salin selepas log masuk

Walau bagaimanapun, untuk fungsi yang ditakrifkan dalam , [ cctype.syn] menyatakan bahawa fungsi khusus ditakrifkan mengikut pengepala perpustakaan standard C . Tiada di lebih rendah ditetapkan sebagai boleh dialamatkan, jadi tingkah laku program ini tidak ditentukan (mungkin tidak betul) kerana percubaan untuk membentuk penunjuk ke bawah.

Kesimpulan

Keluaran yang tidak dijangka tidak dijamin , dan kod itu mungkin tidak disusun. Ini juga terpakai kepada fungsi ahli yang diisytiharkan dalam pustaka standard C.

Atas ialah kandungan terperinci Bolehkah saya Mendapatkan Alamat Fungsi Perpustakaan Standard 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