Rumah >pembangunan bahagian belakang >C++ >Apakah Perbezaan Antara `__PRETTY_FUNCTION__`, `__FUNCTION__` dan `__func__`?

Apakah Perbezaan Antara `__PRETTY_FUNCTION__`, `__FUNCTION__` dan `__func__`?

Patricia Arquette
Patricia Arquetteasal
2024-12-24 00:48:09346semak imbas

What's the Difference Between `__PRETTY_FUNCTION__`, `__FUNCTION__`, and `__func__`?

Memahami Perbezaan: PRETTY_FUNCTION__, __FUNCTION__, dan __func

Dalam pengaturcaraan, mengakses maklumat tentang fungsi semasa boleh berguna untuk penyahpepijatan, pengelogan dan tujuan lain. Tiga pengecam yang biasa digunakan dalam C dan C menyediakan fungsi ini: __PRETTY_FUNCTION__, __FUNCTION__ dan __func__. Setiap satu mempunyai ciri unik tersendiri yang patut difahami.

__func__: Pengecam Standard daripada C99

Ditakrifkan dalam C99, func ialah pengisytiharan secara tersirat pengecam yang berkembang kepada tatasusunan aksara yang mengandungi nama fungsi di mana ia digunakan. Sebagai pengecam yang diisytiharkan, func berkelakuan berbeza daripada makro prapemproses.

__FUNCTION__: Sambungan Pra-Standard

Disokong secara meluas oleh pengkompil C seperti gcc dan Visual C , FUNGSI bukan hanya sebahagian daripada piawaian C. Ia biasanya berkelakuan serupa dengan __func__, tetapi beberapa ketidakkonsistenan antara penyusun mungkin wujud.

__PRETTY_FUNCTION__: Sambungan GCC

PRETTY_FUNCTION a g--s> ialah sambungan yang setanding dengan __FUNGSI__. Walau bagaimanapun, untuk fungsi C, ia mengembalikan nama "cantik", yang termasuk tandatangan fungsi.

Memilih Pengecam yang Betul

Memilih pengecam mana yang hendak digunakan bergantung terutamanya pada keperluan sokongan dan fungsi:

    Jika pematuhan standard C99 diperlukan, gunakan __func__.
  • Jika anda memerlukan pilihan yang lebih mudah alih dengan tingkah laku yang serupa dengan __func__, pertimbangkan untuk menggunakan __FUNCTION__.
  • Jika kod anda direka khusus untuk gcc dan anda mahukan nama fungsi "cantik", gunakan __PRETTY_FUNCTION__.
Ia juga penting untuk merujuk dokumentasi pengkompil khusus untuk sambungan bukan standard seperti

FUNCTION dan __PRETTY_FUNCTION__. Contohnya, Visual C menawarkan sambungan serupa seperti __FUNCSIG__.

Atas ialah kandungan terperinci Apakah Perbezaan Antara `__PRETTY_FUNCTION__`, `__FUNCTION__` dan `__func__`?. 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