tipos - __func__ variable local predefinida de la función C++ 11, no compilará
funciones en lenguaje c (2)
Compile el programa usando estándares C ++ 11 ya que __func__
es la característica C ++ 11.
Por lo tanto, compilarlo como:
g++ -std=c++11 foo.cpp -o foo
La variable predefinida local __func__
C ++ 11 de una función no se compila en Visual Studio 2012 Professional (con la Actualización 1 instalada) con el compilador incorporado predeterminado Visual Studio 2012 (v110) o el compilador CTP (v120_CTP_Nov2012) de noviembre de 2012. Sin embargo, el editor no se queja con ningún subrayado ondulado rojo en __func__
. __func__
se supone que debe dar el nombre de su función que lo contiene, en este caso foo
, pero esto no compila ni hace que el editor se queje:
#include <iostream>
using namespace std;
void foo()
{
cout << __func__ << endl;
return;
}
int main()
{
foo();
return 0;
}
Da el error del compilador:
error C2065: ''__func__'' : undeclared identifier
¿Me estoy perdiendo algo en mi código o esto funcionará en una actualización futura?
El soporte C99 de MSVC es bastante pobre en general; su mejor opción podría ser utilizar la macro específica de __FUNCTION__
. Consulte esta pregunta para obtener más detalles: multiplataforma que define #define para macros __FUNCTION__ y __func__
Actualización (22-06-2015) : Visual Studio 2015 admite __func__
, mira la publicación del blog