La Red de Conocimientos Pedagógicos - Currículum vitae - Un fragmento de texto en stm32, explique. . . Definitivamente adoptelo.

Un fragmento de texto en stm32, explique. . . Definitivamente adoptelo.

#define afirmar_param(expr) ((expr) ? (void)0 : afirmar_failed((u8 *)__FILE__, __LINE__))

void afirmar_failed(archivo u8*, línea u32 ); Esta definición de macro aparecerá en todos los archivos de encabezado de STM32. Este es el mecanismo de aserción. Determine si expr es 0 (o está vacío). Si no es 0 o está vacío, devuelva 0 y busque dónde está definido; de lo contrario, ejecute define afirmar_param(expr) ((void)0) Si es 0 o está vacío, luego llame a la función afirmar_failed (debe finalizar el programa e imprimir el nombre del archivo y el número de línea. Las dos macros __FILE__ y __LINE__ representan el nombre del archivo actual y el número de línea).

De esta manera, es fácil entender que afirmar_param () puede informar un error cuando el programa en ejecución llama a esta función, de modo que los programadores puedan encontrar errores a tiempo sin tener que esperar errores en el programa en ejecución. resultados.

Esta es una técnica de software común que puede ayudar a los programadores a eliminar rápidamente errores obvios durante la fase de depuración.

Esto sacrificará la eficiencia en la ejecución del programa (pero solo en la fase de depuración), pero le ayudará a mejorar la eficiencia en el desarrollo del proyecto.

Esto debería dejarlo claro.

¿Qué significa #define#endif #else, etc.?

Si no comprende esta oración, significa que no ha aprendido bien el lenguaje C. Vaya y lea más sobre C.

El preprocesamiento es el trabajo realizado antes del primer paso del escaneo léxico y análisis de sintaxis de la compilación. Para decirlo sin rodeos, antes de compilar el archivo fuente, primero se procesa la parte de preprocesamiento y luego se compila el código procesado. La ventaja de esto es que el código procesado será muy compacto.

Con respecto a la inclusión de archivos (#include) y la definición de macros (#define) en el comando de preprocesamiento, hay instrucciones detalladas en el libro, por lo que no entraré en detalles aquí. Hablemos brevemente (#ifdef, #else, #endif, #if, etc.) Hay tres situaciones:

1: Situación 1:

#ifdef _XXXX

...Sección del programa 1...

#else

...Sección del programa 2...

#endif