Cómo determinar si el código se está ejecutando en modo DEBUG o RELEASE
1
2
3
4
5
#ifdef DEBUG
//hacer algo.
#else
// haz algo
#endif
# Si quieres hacer trucos, puedes usar el siguiente código. endif
2. Si desea hacer trucos, puede usar el siguiente código. El siguiente código se ha probado en vc6.0. Cuando genere la versión de depuración, imprimirá el modo de depuración. genera la versión de lanzamiento, se imprimirá el modo de depuración;
#include lt;stdio.hgt;
#include lt;stdio.hgt;
la clase es DEBUG
//hacer algo.
#endif
3. siguiente código.
is_debug o_o(2);
__asm mov dword ptr this_addr, eax
if ((unsigned)(amp;o_o)==this_addr) printf( "¡este es el modo de depuración!\n");
else printf("este es el modo de lanzamiento\n");
return 0;
}
El principio de este método es utilizar funciones en línea, porque las funciones definidas dentro de la clase estarán en línea en el compilador de C. Si es una versión de depuración, no existe tal función. . Si es una versión de depuración, no existe tal función. Otro punto útil es que cada vez que definimos un objeto o llamamos a un constructor, el registro eax en la plataforma Windows guarda el puntero this del objeto actual. En la plataforma Linux, el registro ecx lo guarda cuando está en línea Al conectarse. valor de retorno de la función, por lo que el valor del registro eax generalmente no es el puntero this del objeto actual. La combinación de estos dos puntos forma el peculiar método de juicio antes mencionado.
Por supuesto, esto no sigue las reglas de la programación en C. Todo depende de tu conocimiento del compilador que estás utilizando
.