ホームページ > バックエンド開発 > C++ > C および C で関数名にアクセスするために `__func__`、`__FUNCTION__`、および `__PRETTY_FUNCTION__` のいずれかを選択する方法

C および C で関数名にアクセスするために `__func__`、`__FUNCTION__`、および `__PRETTY_FUNCTION__` のいずれかを選択する方法

Susan Sarandon
リリース: 2024-12-13 15:35:11
オリジナル
849 人が閲覧しました

How to Choose Between `__func__`, `__FUNCTION__`, and `__PRETTY_FUNCTION__` for Accessing Function Names in C and C  ?

C および C の関数名マクロ

C および C では、現在の関数の名前にアクセスするためにいくつかのマクロが使用できます。これらのマクロには、__func__、__FUNCTION__、__PRETTY_FUNCTION__ が含まれます。

func

C99 で定義され、C 11 に採用された func は暗黙的に宣言された文字配列変数ですこれは、囲んでいる関数の名前を保持します。これは、装飾のない関数名を提供するシンプルで軽量なオプションです。

FUNCTION

FUNCTION は先行標準です特定のコンパイラでサポートされている拡張子。その動作は func__ に似ていますが、公式言語標準の一部ではありません。移植性の理由から、利用可能な場合は __func を使用することをお勧めします。

PRETTY_FUNCTION

PRETTY_FUNCTION は GCC-関数の「きれいな」名前を提供する特定の拡張子。その署名。以前のバージョンとは異なり、C では引数の型を含む完全な関数プロトタイプを取得するのに主に役立ちます。

Documentation

func は C99 に文書化されています。標準、セクション 6.4.2.2/1。 FUNCTION は正式には文書化されていませんが、通常はコンパイラー固有の文書に含まれています。 PRETTY_FUNCTION については、GCC ドキュメント ページ「文字列としての関数名」に記載されています。

各マクロをいつ使用するか

マクロの選択は、以下によって異なります。特定の要件:

  • 単純な関数name: func または FUNCTION で十分です。
  • 署名付きの複合関数名 (C のみ): PRETTY_FUNCTION
  • C99 以前または非 C 11 互換性: FUNCTION (コンパイラでサポートされている場合)
  • 最大の移植性: func

以上がC および C で関数名にアクセスするために `__func__`、`__FUNCTION__`、および `__PRETTY_FUNCTION__` のいずれかを選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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