ホームページ > バックエンド開発 > C++ > 「__PRETTY_FUNCTION__」、「__FUNCTION__」、「__func__」の違いは何ですか?

「__PRETTY_FUNCTION__」、「__FUNCTION__」、「__func__」の違いは何ですか?

Patricia Arquette
リリース: 2024-12-24 00:48:09
オリジナル
345 人が閲覧しました

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

違いを理解する: PRETTY_FUNCTION__、__FUNCTION__、__func

プログラミングでは、現在の関数に関する情報にアクセスすると、デバッグ、ロギング、その他の目的に役立ちます。 C および C で一般的に使用される 3 つの識別子 (__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 用に特別に設計されており、「きれいな」関数名が必要な場合は、__FUNCTION__ を使用してください。 __PRETTY_FUNCTION__.

特定のコンパイラのドキュメントを参照することも重要です。 FUNCTION や __PRETTY_FUNCTION__ などの非標準拡張子。たとえば、Visual C では、__FUNCSIG__.

などの同様の拡張機能が提供されています。

以上が「__PRETTY_FUNCTION__」、「__FUNCTION__」、「__func__」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート