11

Lokalna predefiniowana zmienna funkcji nie jest kompilowana w Visual Studio 2012 Professional (z zainstalowaną aktualizacją 1) z domyślnym wbudowanym interfejsem Visual Kompilator Studio 2012 (v110) lub kompilator CTP z listopada 2012 (v120_CTP_Nov2012). Jednak redaktor nie narzeka z czerwoną falującą podkreśleniem pod numerem __func__. __func__ ma podać nazwę swojej funkcji, zawierającego w tym przypadku foo, ale to ani kompiluje ani uczynić edytora skarżą:__func__ Zmienna predefiniowana lokalna C++ 11, nie będzie kompilować

#include <iostream> 
using namespace std; 

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

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

To daje błąd kompilatora:

error C2065: '__func__' : undeclared identifier 

jestem brakuje coś w moim kodzie lub będzie to działało w przyszłej aktualizacji?

+1

[tutaj] (http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx?PageIndex=11) mówi, że wsparcie jest "częściowe". Nie jestem pewien, co to oznacza. –

+7

"Jednak redaktor nie narzeka z czerwoną falistą podkreśleniem pod' __func__'. " - * Nigdy * polegaj na czerwonych znakach, aby powiedzieć, czy Twój kod się skompiluje, czy nie. IntelliSense i rzeczywisty front-end kompilatora są opracowywane przez różne osoby. W razie wątpliwości kompilator jest poprawny, ponieważ to właśnie tworzy pliki binarne. – Xeo

Odpowiedz

-3

kompilacji programu za pomocą C++ 11 normy __func__ jest C++ 11 funkcji.

więc skompilować to lubią:

g++ -std=c++11 foo.cpp -o foo 
+0

OP nie korzysta z GCC. MSVC nie obsługuje żadnej opcji wiersza polecenia "-std = C++ 11". Poświęć nieco więcej czasu na przeczytanie pytania przed udzieleniem odpowiedzi, może to być dobra odpowiedź na inne pytanie, po prostu nie na to pytanie. – hvd