Aserción y mensajes Usuario-Proporcionados (C++)

La compatibilidad con lenguajes de C++ tres mecanismos de control de errores que ayudan a depurar la aplicación: directiva #error, la palabra clave de assert , y la macro de assert (CRT) .Los tres mecanismos emiten mensajes de error, y dos también prueban aserciones de software.Una aserción de software especifica una condición que se espera que sea true en un punto determinado en el programa.Si se produce un error de aserción en tiempo de compilación, el compilador emite un mensaje de diagnóstico y un error de compilación.Si se produce un error de aserción en tiempo de ejecución, el sistema operativo un mensaje de diagnóstico y cierra la aplicación.

Comentarios

La duración de la aplicación se compone de un preprocesamiento, una compilación, y una fase en tiempo de ejecución.Cada mecanismo de control de errores tiene acceso a la información de depuración disponible durante una de estas fases.Para depurar eficazmente, seleccione el mecanismo que proporciona la información adecuada sobre esa fase:

  • directiva #error es en efecto en tiempo de preprocesamiento.Incondicionalmente emite un mensaje definido por el usuario y hace que la compilación se lleve a cabo con un error.El mensaje puede contener texto que se manipulan mediante directivas de preprocesador pero ninguna expresión resultante no se evalúa.

  • La declaración de assert es en efecto en tiempo de compilación.Prueba una aserción de software que está representada por una expresión completa definida por el usuario que se puede convertir en un valor booleano.Si la expresión se evalúa como cero (false), el compilador emite un mensaje definido por el usuario y los errores de compilación con un error.

    La declaración de static_assert es especialmente útil para depurar plantillas porque los argumentos de plantilla se pueden incluir en la expresión definida por el usuario.

  • La macro de assert (CRT) es en efecto en tiempo de ejecución.Evalúa una expresión definida por el usuario, y si el resultado es cero, el sistema emitirá un mensaje de diagnóstico y cierre la aplicación.Muchas otras macros, como_ASSERT y _ASSERTE, se parecen a esta macro pero emiten diferentes mensajes de diagnóstico definida por sistema o definida por el usuario.

Vea también

Referencia

Directiva #error (C/C++)

assert (CRT)

_ASSERT, macros _ASSERTE

assert

Macro de _STATIC_ASSERT

Otros recursos

Plantillas