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

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

Patricia Arquette
Patricia Arquette原創
2024-12-23 21:51:10313瀏覽

What are the Differences Between `__PRETTY_FUNCTION__`, `__FUNCTION__`, and `__func__`?

了解PRETTY_FUNCTION__、__FUNCTION__ 和__func

之間的差異在編碼領域,理解這一點至關重要三個標識符的區別: __PRETTY_FUNCTION__、__FUNCTION__ 和__func__。每個都有其獨特的屬性和文檔,根據所需的結果影響我們的選擇。

深入研究func

在C99 中引入,func 提供了一個簡單的解決方案,用於在函數範圍內存取目前函數的名稱。它擴展為包含未修飾的函數名稱的字元數組。這個標識符在C 中也得到了關注,在C 11 中添加了一個稍微不同的定義:「實現定義的字串。」

探索FUNCTION

某些C 編譯器支援FUNCTION作為預標準擴展,但是僅僅依賴它是不可取的。對於缺乏 func 支援的編譯器,FUNCTION 可以作為替代品,儘管與標準化版本相比有限制。

Enter PRETTY_FUNCTION

__PRETTY_FUNCTION__ 是 gcc 特有的擴展,其操作與 __FUNCTION__ 類似。然而,在 C 函數的上下文中,它提供了函數名稱的增強版本,以及函數簽名。 Visual C 在 __FUNCSIG__ 中提供了類似的替代方案,但有細微的差別。

文件和可用性

對於非標準宏,請謹慎參考對應的編譯器文件。 Visual C 擴充功能在 MSDN 中 C 編譯器的「預定義巨集」下有詳細記錄,而 gcc 擴充功能則在文件頁面「函數名稱作為字串」中介紹。

選擇正確的識別碼

選擇適當的識別碼取決於所需的結果和編譯器

  • __func__ : 使用它來標準化存取C99 及更高版本中的未修飾函數名稱。
  • __FUNCTION__: 考慮使用當func 不可用時,但要注意它
  • __PRETTY_FUNCTION:
__PRETTY_FUNCTION:

__PRETTY_FUNCTION:__PRETTY_FUNCTION:__PRETTY_FUNCTION:如果您需要有__ C 程式碼簽署的「漂亮」函數名稱,尤其是gcc,請選擇此選項。 透過理解了解這些標識符的細微差別,您可以有效地利用它們的力量來獲取您在編碼工作中所需的功能相關資訊。

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

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