11

__func__ Локальная предопределенная переменная функции C++ 11 не компилируется в Visual Studio 2012 Professional (с установленным обновлением 1) со встроенной по умолчанию Visual Studio 2012 (v110) или компилятор CTP (v120_CTP_Nov2012) в ноябре 2012 года. Тем не менее, редактор не жалуется на красную подчеркнуто подчеркивание под __func__. __func__ предполагается дать имя содержащего его функции, в данном случае foo, но это ни компиляций, ни сделать редактор жалуются:__func__ локальная предопределенная переменная функции C++ 11, не будет компилироваться

#include <iostream> 
using namespace std; 

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

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

Это дает ошибку компилятора:

error C2065: '__func__' : undeclared identifier 

я упускаю что-то в моем коде или это будет работать в будущем обновлении?

+1

[Здесь] (http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx?PageIndex=11) он говорит, что поддержка «частичная». Не уверен, что это значит. –

+7

«Тем не менее, редактор не жалуется ни на какие красноватые подчеркивания под' __func__'. » - * Никогда * не полагайтесь на красные squiggles, чтобы сказать вам, будет ли ваш код компилироваться или нет. IntelliSense и фактический интерфейс компилятора разрабатываются разными людьми. Если есть сомнения, компилятор прав, потому что это то, что создает ваши двоичные файлы. – Xeo

ответ

-3

Компиляция программы с использованием C++ 11 стандартов, __func__ является C++ 11.

Так, компилировать это нравится:

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

OP не использует GCC. MSVC не поддерживает параметр командной строки '-std = C++ 11'. Пожалуйста, примите немного больше времени, чтобы прочитать вопрос, прежде чем отвечать, это могло быть хорошим ответом на другой вопрос, просто не на этот вопрос. – hvd

Смежные вопросы