c assert assertion handling c with examples
Este tutorial de afirmaciones de C ++ arroja luz sobre las afirmaciones en C ++, que son declaraciones para probar las suposiciones en el programa realizadas por el programador:
cual es el mejor extractor de dvd
En un programa C ++, generalmente hacemos suposiciones en un programa como un índice de matriz debería ser mayor que cero.
Cuando estas suposiciones se hacen realidad, el programa ejecuta la multa, pero cuando estas suposiciones se vuelven falsas, el programa no termina normalmente.
=> Visite aquí para conocer el curso completo de C ++ de expertos.
Lo que vas a aprender:
Afirmaciones en C ++
Una aserción es una declaración en C ++ que prueba una condición como la explicada anteriormente. Si la condición es verdadera, el programa continúa normalmente y si la condición es falsa, el programa finaliza y se muestra un mensaje de error.
Podemos proporcionar una aserción utilizando una macro de preprocesador de aserción.
Con el entero myInt, podemos declarar una afirmación que diga que myInt debe ser> 0 de la siguiente manera.
|_+_|Suponga que el valor de myInt especificado es -1, por lo tanto, la aserción falla cuando el compilador encuentra la declaración anterior, ya que el valor de myInt es -1. Una vez que la aserción falla, se emite un mensaje que indica una aserción no válida junto con el nombre del programa y el número de línea y el programa se termina.
Un prototipo general de aserción es el siguiente:
afirmar (condición) donde condición => expresión de tipo escalar
Una aserción es una macro de preprocesador que se utiliza para evaluar una expresión condicional. Si la expresión condicional se evalúa como falsa, el programa se termina después de mostrar el mensaje de error. El mensaje de error generalmente consta de la expresión condicional fallida, el nombre del archivo de código y el número de línea de la aserción.
De este modo, podemos saber dónde ocurrió el problema y cuál es el problema que ocurrió en el código. Por lo tanto, el uso de aserciones hace que la depuración sea más eficiente.
El encabezado de C ++< cassert > contiene la funcionalidad de aserción. Usamos principalmente la funcionalidad de aserción en el código para verificar si los parámetros pasados a una función son válidos, para verificar el valor de retorno de una función o para verificar los límites de la matriz, entre otras cosas.
Ejemplo básico de aserción de C ++.
|_+_|Producción:
En el programa anterior, hemos utilizado una llamada de aserción que contiene la expresión (myInt! = NULL) en la función display_number. En la función principal primero, pasamos una variable de puntero second_ptr que contiene la dirección de la variable myptr. Cuando se realiza esta llamada, la aserción es verdadera. Por tanto, la ejecución del programa es normal y se muestra el valor.
En la segunda llamada a display_number, pasamos el puntero nulo haciendo así que assert falso. Por lo tanto, cuando se realiza la segunda llamada, el mensaje de aserción fallida se muestra como se muestra en la salida.
Desactivación de la aserción con NDEBUG
Cuando usamos aserciones, se comprueban en tiempo de ejecución. Las afirmaciones hacen que la depuración sea eficaz, pero se debe tener cuidado de no incluir afirmaciones en la versión de la aplicación. Esto se debe a que sabemos que cuando lanzamos una aplicación, lo hacemos solo cuando estamos seguros de que la aplicación se ha probado a fondo.
Por lo tanto, debemos deshabilitar todas las afirmaciones cuando lancemos el software. Podemos deshabilitar las afirmaciones en un programa usando la macro NDEBUG. El uso de la macro NDEBUG en un programa deshabilita todas las llamadas para hacer valer.
Podemos incluir una línea dada a continuación en el programa para deshabilitar todas las declaraciones de aserción.
|_+_|Los siguientes programas en C ++ muestran cómo se comporta el programa cuando se comenta NDEBUG, así como cuando NDEBUG está activo.
# 1) NDEBUG especificado pero comentado.
|_+_|Producción:
dazn VPN Alemania
En este programa, hemos especificado la sentencia #define NDEBUG pero está comentada. Esto significa que la declaración de aserción está activa. Por lo tanto, cuando se ejecuta el programa, la segunda llamada para afirmar devuelve falso y se muestra un mensaje de error y el programa se aborta.
# 2) NDEBUG está activo.
|_+_|Producción:
En este programa, descomentamos la macro NDEBUG. Ahora, cuando ejecutamos el programa, las declaraciones de aserción ya no están activas. Por lo tanto, el programa continúa su ejecución normal incluso cuando la segunda condición de la declaración de aserción es falsa.
Por lo tanto, al descomentar la línea #define NDEBUG, hemos desactivado las declaraciones de aserción en el programa.
Assert y static_assert
La aserción que hemos visto hasta ahora se ejecuta en tiempo de ejecución. C ++ admite otra forma de aserción conocida como static_assert y realiza una verificación de aserción en tiempo de compilación. Está presente desde C ++ 11.
Un static_assert tiene la siguiente sintaxis general.
|_+_|Aquí bool_constexpr => c Expresión constante convertida contextualmente de tipo bool.
Mensaje => Cadena que aparecerá como mensaje de error si bool_constexpr es falso.
Entonces, si bool_constexpr se evalúa como verdadero, el programa procede normalmente. Si bool_constexpr se evalúa como falso, se emite un error del compilador.
El siguiente programa muestra el uso de static_assert en un programa C ++.
|_+_|Producción:
En el programa anterior, hemos proporcionado static_assert con una expresión y un mensaje. Cuando falla, se emite un error del compilador como se muestra en la salida.
Preguntas frecuentes
P # 1) ¿Qué es Assert en C ++?
Responder: Una aserción en C ++ es una macro predefinida mediante la cual podemos probar ciertas suposiciones que se establecen en el programa. Cuando la expresión condicional en una declaración de aserción se establece en verdadera, el programa continúa normalmente. Pero cuando la expresión es falsa, se emite un mensaje de error y el programa finaliza.
P # 2) ¿Qué es static_assert?
Responder: Static_assert se evalúa en tiempo de compilación en comparación con la declaración assert () que se evalúa en tiempo de ejecución.
Static_assert se ha incorporado en C ++ desde C ++ 11 en adelante. Se necesita la expresión condicional y un mensaje para mostrarse como argumentos. Cuando la condición se evalúa como falsa, se emite un error del compilador y se muestra el mensaje. A continuación, se termina el programa.
P # 3) ¿Cuál es el propósito de la macro assert ()?
Responder: La macro Assert () se usa para probar las condiciones o suposiciones que no deberían ocurrir en un programa. Por ejemplo, el índice de la matriz siempre debe ser> 0. Otro supuesto puede ser 2 + 2 == 3 + 1.
Por lo tanto, usando assert () podemos probar tales suposiciones y siempre que se evalúen como verdaderas, nuestro programa se ejecuta normalmente. Cuando son falsas, el programa finaliza.
Conclusión
En este tutorial, hemos visto el funcionamiento de las declaraciones assert () en C ++. La declaración assert () se define en el encabezado. Podemos deshabilitar la aserción usando la macro NDEBUG. Los desarrolladores deben tener cuidado de que assert no se pueda usar en el código de producción, ya que se espera que el código de producción se pruebe a fondo y esté libre de errores.
Aparte de la declaración assert (), C ++ 11 también admite static_assert () que se evalúa en tiempo de compilación. Cuando static_asset () se evalúa como falso, se emite un error del compilador y el programa se termina.
preguntas y respuestas de la entrevista de qa pdf
Las afirmaciones son una forma de probar las suposiciones en el programa y, al evaluar las expresiones condicionales dentro de las afirmaciones, podemos probar el programa a fondo y la depuración se vuelve más eficiente.
=> Consulte TODOS los tutoriales de C ++ aquí.
Lectura recomendada
- Tutorial de manejo de excepciones de C # con ejemplos de código
- Ejemplos de afirmación de selenio: aplicaciones prácticas en proyectos
- Estructura del programa C # y sintaxis básica con ejemplos
- Tutorial de Python DateTime con ejemplos
- Cortar comando en Unix con ejemplos
- Sintaxis del comando Unix Cat, opciones con ejemplos
- Uso del cursor en MongoDB con ejemplos
- Comando Ls en Unix con ejemplos