Aserciones de MFC
Actualización: noviembre 2007
Este tema es aplicable a:
Edición |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
Sólo para código nativo |
|||
Standard |
Sólo para código nativo |
|||
Pro y Team |
Sólo para código nativo |
Leyenda de la tabla:
Se aplica |
|
No procede |
|
Comando o comandos ocultos de manera predeterminada. |
MFC define la macro ASSERT para comprobar aserciones. Asimismo, define MFC ASSERT_VALID y CObject::AssertValid para comprobar el estado interno de un objeto derivado de CObject.
La macro ASSERT de MFC detiene la ejecución de un programa y alerta al usuario si el argumento (una expresión) se evalúa como cero o False. Si la expresión se evalúa como un valor distinto de cero, la ejecución continúa.
Cuando se produce un error de aserción, un cuadro de mensaje muestra el nombre del archivo de código fuente y el número de línea de la aserción. Si se elige Reintentar en el cuadro de diálogo, una llamada a AfxDebugBreak hace que la ejecución se interrumpa y se inicie el depurador. En ese punto, se puede examinar la pila de llamadas y otros servicios del depurador para determinar la causa del error de aserción. Si la depuración Just-in-time está habilitada, el cuadro de diálogo puede iniciar el depurador, a menos que ya estuviera en ejecución cuando se produjo el error de aserción.
En el siguiente ejemplo se muestra cómo se utiliza ASSERT para comprobar el valor devuelto por una función:
int x = SomeFunc(y);
ASSERT(x >= 0); // Assertion fails if x is negative
Se puede utilizar ASSERT con la función IsKindOf para proporcionar la comprobación de tipos de los argumentos de una función:
ASSERT( pObject1->IsKindOf( RUNTIME_CLASS( CPerson ) ) );
La macro ASSERT captura errores de programa sólo en la versión de depuración del programa. La macro no produce código en la versión de lanzamiento. Si necesita evaluar la expresión en la versión de lanzamiento, utilice la macro VERIFY en vez de ASSERT.