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.