C でのクラス情報の取得: CLASS マクロ
C では、CLASSマクロは、次のような、現在のクラスの名前を取得する便利な方法を提供します。 FUNCTION は関数名へのアクセスを提供します。
CLASS マクロ実装
ただし、CLASS は、C 標準で正式に定義されたマクロではありません。代わりに、その実装はコンパイラとプラットフォームによって異なる場合があります。
gcc 用に定義されている一般的な実装の 1 つは、関数名とともにクラス名を含むPRETTY_FUNCTION マクロです。ただし、このマクロは標準化されておらず、その動作はコンパイラごとに異なる場合があります。
代替ソリューション
コンパイラ間での移植性が重要なシナリオでは、typeid(*this ).name() を使用すると、名前空間を含む修飾クラス名を取得できます。ただし、このメソッドは有効な this ポインターが存在する場合にのみ適用でき、静的メソッド呼び出しの場合は当てはまらない場合があります。プラットフォーム固有のマクロ
一部のコンパイラでは、クラス情報を取得するためのプラットフォーム固有のマクロを提供します。たとえば、Microsoft Visual Studio には、クロスプラットフォームでクラス名を抽出するために使用できる __declspec(dllexport) 属性と __declspec(dllimport) 属性が用意されています。クラスとメソッドのカスタム マクロ名前
より汎用的で移植可能なアプローチを実現するために、クラス名とメソッド名を抽出するカスタム マクロを定義できます。PRETTY_FUNCTION または typeid(*this).name():
これらのマクロは、ヘルパー関数を利用して __PRETTY_FUNCTION__ から必要な情報を解析し、コンパイラーおよびプラットフォーム間の互換性を確保します。以上がC でクラス情報を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。