13

関数の__func__C++11 ローカル定義済み変数は、既定の組み込み Visual Studio 2012 (v110) コンパイラまたは 2012 年 11 月の CTP (v120_CTP_Nov2012) コンパイラを使用した Visual Studio 2012 Professional (Update 1 がインストールされている) でコンパイルされません。ただし、エディターは、 の下に赤い波線の下線が表示されても文句を言いません__func____func__この場合、含まれている関数の名前を指定することになってfooいますが、これはコンパイルもエディターも文句を言いません。

#include <iostream>
using namespace std;

void foo()
{
    cout << __func__ << endl;
    return;
}

int main()
{
    foo();
    return 0;
}

コンパイラエラーが発生します:

error C2065: '__func__' : undeclared identifier

コードに何か不足していますか、それとも将来の更新で機能しますか?

4

2 に答える 2

14

MSVCのC99サポートは一般的にかなり貧弱です。最善の策は、MSVC固有の__FUNCTION__マクロを使用することです。詳細については、この質問を参照してください:マクロ__FUNCTION__および__func__の#defineを定義するクロスプラットフォーム

更新(2015-06-22):VisualStudio2015はサポートしています。ブログ投稿__func__を参照してください

于 2013-03-01T02:49:02.007 に答える
-3

C++11 機能と同様に、C++11 標準を使用してプログラムをコンパイルし__func__ます。

したがって、次のようにコンパイルします。

g++ -std=c++11 foo.cpp -o foo
于 2015-06-07T09:01:04.083 に答える