tutorial - visual studio c++ descargar
Visual C++ equivalente a__FILE__,__LINE__ y__PRETTY_FUNCTION__ (7)
Sí, Microsoft Visual Studio tiene
__FILE__y__LINE__. Aquí hay más macros de MSVC .Ambos son ANSI C ++.
__FUNCTION__tiene__FUNCTION__, que es específico de Microsoft.
El compilador GCC me da las siguientes macros:
-
__FILE__para que pueda imprimir el nombre del archivo + directorio. -
__LINE__para que pueda imprimir el número de línea desde donde estoy imprimiendo. -
__PRETTY_FUNCTION__para que pueda imprimir el bonito nombre de la función
¿Visual C ++ tiene el equivalente de estas macros? Una pregunta secundaria es, ¿son estos estándares para los compiladores de C ++?
En VS2008, esto:
struct A
{
bool Test(int iDummyArg)
{
const char *szFile = __FILE__;
int iLine = __LINE__;
const char *szFunc = __FUNCTION__; // Func name
const char *szFunD = __FUNCDNAME__; // Decorated
const char *szFunS = __FUNCSIG__; // Signature
printf("%s/n", szFile);
printf("%d/n", iLine);
printf("%s/n", szFunc);
printf("%s/n", szFunD);
printf("%s/n", szFunS);
return true;
}
};
int wmain(int argc, TCHAR *lpszArgv[])
{
A a;
a.Test(10);
}
imprimirá esto:
c:/source/test_projects/blah/blah.cpp
14
A::Test
?Test@A@@QAE_NH@Z
bool __thiscall A::Test(int)
(El número de línea es "incorrecto" ya que realmente había algunas cosas adicionales en la parte superior de mi archivo).
Para obtener más portabilidad para obtener el nombre de la función actual, puede probar BOOST_CURRENT_FUNCTION .
Sé que __FILE__ ofrece __FILE__ y __LINE__ , las cuales son macros estándar. También ofrecen __FUNCTION__ , que creo que es lo que estás buscando,
Sí, Visual C ++ los tiene o un equivalente. Vea las respuestas aquí:
¿Cuál es la diferencia entre __PRETTY_FUNCTION__, __FUNCTION__, __func__? function-func / 4384860 # 4384860
También tenga en cuenta que a pesar de la mayúscula utilizada, no son macros. Son variables.
__FILE__ y __LINE__ son estándar desde C89. __PRETTY_FUNCTION__ es un GCCismo. __func__ es un C99ism que (a diferencia de GCCisms) bien puede estar disponible en Visual C ++; no es exactamente lo mismo que __PRETTY_FUNCTION__ pero puede ser lo suficientemente cerca para sus propósitos.
__FILE__ y __LINE__ son estándar, y estoy bastante seguro de que los compiladores de Microsoft siempre los han tenido.
__PRETTY_FUNCTION__ es una característica de gcc.