首頁 >後端開發 >C++ >`__PRETTY_FUNCTION__`、`__FUNCTION__` 和 `__func__` 有什麼區別?

`__PRETTY_FUNCTION__`、`__FUNCTION__` 和 `__func__` 有什麼區別?

Patricia Arquette
Patricia Arquette原創
2024-12-24 00:48:09346瀏覽

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

理解差異:PRETTY_FUNCTION__、__FUNCTION__ 和__func

在程式設計中,存取有關目前函數的資訊對於調試、日誌記錄和其他目的很有用。 C 和 C 語言中三個常用的識別碼提供此功能:__PRETTY_FUNCTION__、__FUNCTION__ 和 __func__。每個都有其獨特的特徵,值得理解。

__func__:來自C99 的標準標識符

在C99 中定義,func 是一個隱式聲明的標識符擴展為包含使用它的函數名稱的字元數組。作為聲明的標識符,func 的行為與預處理器巨集不同。

__FUNCTION__:預標準擴展

受到C 編譯器的廣泛支持,例如gcc 和Visual C ,FUNCTION 嚴格來說不是C 的一部分標準。它的行為通常與 __func__ 類似,但編譯器之間可能會有一些不一致。

__PRETTY_FUNCTION__:GCC 擴充

PRETTY_FUNCTION 是 gcc 特定的與 __FUNCTION__ 相當的副檔名。然而,對於 C 函數,它會傳回「漂亮」的名稱,其中包括函數的簽名。

選擇正確的識別碼

選擇要使用的識別碼主要取決於支援和功能要求:

  • 如果需要符合標準C99,請使用__func__.
  • 如果您需要行為類似於__func__的更可移植的選項,請考慮使用 __FUNCTION__。
  • 如果您的程式碼是專門為gcc 設計的並且您想要「漂亮」的函數名稱,請使用__PRETTY_FUNCTION__.

查閱特定的編譯器文件也很重要非標準擴展,如FUNCTION 和__PRETTY_FUNCTION__。例如,Visual C 提供類似的擴展,如 __FUNCSIG__。

以上是`__PRETTY_FUNCTION__`、`__FUNCTION__` 和 `__func__` 有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn