19

呼び出されるたびに関数名を出力したいのですが、関数名を簡単にコピーして貼り付けることができますが、私のために仕事をするショートカットがあるのだろうか?

現時点で私はやっています:

SlideInfoHeader* lynxThreeFile::readSlideInfoHeader(QDataStream & in)
{
    qDebug("lynxThreeFile::readSlideInfoHeader");
} 

しかし、私が欲しいのは一般的なものです:

SlideInfoHeader* lynxThreeFile::readSlideInfoHeader(QDataStream & in)
{
    qDebug(this.className() + "::" + this.functionName());
}
4

5 に答える 5

27

" __FUNCTION__" は MSVC と GCC の両方でサポートされており、必要な情報が得られるはずです。

于 2008-10-06T10:34:28.420 に答える
14

あなたの例から、あなたがQtを使用していることがわかります。その場合、最善の策はQ_FUNC_INFOfound inを使用することです<QGlobal>。説明は次のとおりです。

マクロが存在する関数を説明する文字列に展開されます。この文字列がより具体的にどのように見えるかは、コンパイラに依存します。GNU GCC では通常、関数シグネチャですが、他のコンパイラでは行番号と列番号になる場合があります。

于 2008-10-06T16:28:37.753 に答える
8

gcc を使用している場合は、__PRETTY_FUNCTION__さらにお好みのものが見つかるかもしれません。

于 2008-10-06T17:31:41.573 に答える
5

ブーストをチェックアウトすると、プラットフォーム間で移植可能なマクロ BOOST_CURRENT_FUNCTION があります。__func__C99 標準には、必要な効果を持つコンパイラ変数があります。C++0x 標準に受け入れられたと思います。かなりの数のコンパイラがすでにこれをサポートしています。

于 2008-10-06T13:52:41.750 に答える
5

__func__c99です(これは、ビジュアルスタジオでは動作しない可能性があることを意味します-しかし、それは標準です:o))

__FUNCTION__ほぼどこでも機能します

__PRETTY_FUNCTION__gnu 固有であり、(namespaces?)、classname、returntype、functionname、parameterslist を含む完全修飾名を返します

于 2008-10-20T08:47:21.237 に答える