Rumah >pembangunan bahagian belakang >C++ >Pengecam C/C yang manakah Perlu Saya Gunakan untuk Mendapatkan Nama Fungsi pada Runtime?

Pengecam C/C yang manakah Perlu Saya Gunakan untuk Mendapatkan Nama Fungsi pada Runtime?

Patricia Arquette
Patricia Arquetteasal
2024-12-13 00:13:14828semak imbas

Which C/C   Identifier Should I Use to Get a Function's Name at Runtime?

Memilih Pengecam Yang Tepat untuk Pemerolehan Nama Fungsi

C dan C menawarkan beberapa pengecam untuk mendapatkan semula nama fungsi aktif semasa masa jalan: __PRETTY_FUNCTION__ , __FUNCTION__ dan __func__. Panduan ini meneroka perbezaan antara pengecam ini dan memberikan panduan tentang penggunaannya.

__func__:

"__func__" ialah pengecam yang diperkenalkan C99 yang mewakili tatasusunan aksara yang mengandungi nama fungsi. Ia ditakrifkan secara tersirat dalam setiap fungsi. Dalam C , func telah diperkenalkan dalam C 11, menawarkan rentetan pelaksanaan yang ditetapkan.

__FUNCTION__:

"__FUNCTION__" ialah pra- sambungan standard yang disokong oleh pengkompil seperti gcc dan Visual C . Walau bagaimanapun, adalah disyorkan untuk menggunakan func jika disokong dan FUNCTION hanya apabila func tidak tersedia.

__PRETTY_FUNCTION__:

"__FUNGSI_CANTIK__" ialah a sambungan khusus gcc yang menyerupai __FUNCTION__. Untuk fungsi C, ia memaparkan nama "cantik", termasuk tandatangan. Visual C mempunyai sambungan yang serupa, __FUNCSIG__.

Memutuskan Pengecam Mana Yang Akan Digunakan:

Pilihan bergantung pada sokongan pengkompil dan format nama fungsi yang dikehendaki:

  • Gunakan func apabila tersedia (disokong dalam kebanyakan penyusun)
  • Gunakan FUNCTION jika func tidak tersedia
  • Gunakan PRETTY_FUNCTION atau FUNCSIG nama "cantik" dengan tandatangan fungsi (gcc atau Visual C sahaja)

Dokumentasi:

  • __func__: C99 §6.4.2.2/1
  • func (C ): C 11 §8.4.1[dcl.fct.def.general]/8
  • __FUNCTION__, __PRETTY_FUNCTION__: dokumentasi gcc, "Function Names as Strings"
  • __FUNCSIG__: MSDN documentation, "Predefined Macros" Visual C )

Atas ialah kandungan terperinci Pengecam C/C yang manakah Perlu Saya Gunakan untuk Mendapatkan Nama Fungsi pada Runtime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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