La diferencia entre STM32 y si
(1)? En primer lugar, if es una declaración condicional y #if es una instrucción de preprocesamiento. ¿Qué pasa con la ejecución?
(2) Ejemplo 1:
#define A 2
#if A==2
void foo() p>
{
printf("A == 2");
}
#else
void foo( )
{
printf("A != 2");
}
#endif
int main()
{
foo();
}
Ejemplo 2:
Este ejemplo Salida A == 2
Si cambia #define A 2, ¡es posible generar A! = 2
#if.
a
#else
b
#endif, en realidad, esto es la opción para compilar esta parte. La diferencia entre if-else es: cuando se compila en ?selected, si es a y luego b, no se compilará en absoluto, if-else compilará todo y luego se ejecutará.
Entonces la pregunta es, al preprocesar el formulario #if #else, si es a, ¿qué pasa cuando el programa se está ejecutando? ¿En el programa la condición es completa? de lo contrario, ¿será ejecutado? b
La respuesta es: No, el motivo se explica en (3)
(3) La función de #if: algunos programas pueden querer utilizar depuración, compatibilidad y portabilidad de plataforma , etc. Simplemente configure algunos parámetros. Es posible que algunos programas quieran que el programa funcione para ellos simplemente configurando algunos parámetros. Esto se puede lograr simplemente configurando algunos parámetros. Por supuesto, esto se puede lograr estableciendo variables y escribiendo todo el código posible en el programa. Por supuesto, también se puede lograr configurando variables, es decir, escribiendo todos los códigos posibles en el programa y configurándolo durante la inicialización, pero en diferentes situaciones, es posible que solo necesite configurar algunos parámetros. Pero en diferentes situaciones, es posible que solo necesites escribir parte del código. Pero en diferentes situaciones, es posible que solo escriba una parte del código, por lo que no es necesario escribir el código completo. Es posible escribir el código completo. La compilación condicional establece condiciones de compilación mediante instrucciones de precompilación y compila diferentes códigos cuando es necesario.
Por lo tanto, una vez completada la compilación de la parte de condición de preprocesamiento, solo la parte del bloque de código que cumple las condiciones se ejecutará durante el tiempo de ejecución. Bloques de código parciales que cumplen las condiciones
En otras palabras, puede establecer diferentes condiciones en el momento de la compilación para compilar diferentes códigos. Las expresiones en la directiva precompilada son las mismas que las del lenguaje C
.Las directivas de precompilación se pueden utilizar para compilar código diferente en diferentes momentos. Las expresiones en directivas precompiladas son similares a las expresiones en el lenguaje C. Las expresiones en directivas precompiladas son básicamente las mismas que las expresiones en lenguaje C. En instrucciones precompiladas se pueden utilizar operaciones lógicas, operaciones aritméticas, operaciones de bits, etc. Debido a que las directivas de precompilación se procesan antes de la compilación, se puede lograr la compilación condicional. Procese las directivas de precompilación antes de la compilación y seleccione segmentos de código mediante la precompilación. Reemplazo de macros, selección condicional de fragmentos de código y ¿qué sigue? Luego compila el código final que se compilará. Luego completa la compilación.
El significado general de #if es que si el código que sigue a #if no se compila, el código no se compilará. El significado general de #if es que puede usar #if para crear código nuevo si la expresión constante que sigue a #if es verdadera. El significado general de #if es que si la expresión constante después de #if es verdadera, entonces se compilará el código que controla. Por ejemplo, si la condición 1 es verdadera, entonces el segmento de código 1, la condición 1 es verdadera y la condición 1 es verdadera. real. Si la condición 1 es verdadera, se compila el código que controla. Por ejemplo, la condición 1 del segmento de código 1 es verdadera, pero la condición 1 del segmento de código 1 no es verdadera. Luego verifique si la condición 2 es verdadera. Si la condición 2 es verdadera, se compila el segmento de código 2; de lo contrario, se compila el segmento de código 2.
Si la condición 2 se convierte en ?, se compila el segmento de código 2; de lo contrario, otras condiciones se juzgan por analogía. Si la condición 1-N no es ?, se compila el último segmento de código n+1.
(4) Ventajas de #if: adaptación del sistema
La adaptación del sistema es un proceso de reducción de dimensionalidad y optimización del código fuente del sistema para reducir funciones innecesarias.
/*----------------------------------------- -----------------*/
#incluye "stdio.h"
# definir TEST_2 1
int main()
{
int a=11;
#if TEST_2
int *b=&a;
*b = 10;
#endif
a++; p>/*---------------------------------------------- -----------------------*/
Como se muestra en el ejemplo anterior, solo necesitamos modificar la definición de macro. Simplemente cambiamos la definición de macro de TEST_2 a 0 y recompilamos algunas funciones que no son necesarias. Lo logramos. Por supuesto, este no es el caso. En términos generales, las definiciones de macros se colocan en un archivo específico (es decir, en un archivo que no forma parte de la funcionalidad del programa). (Este es el caso de TEST_2). Para simplificar, está escrito en ? para que no se pueda definir una macro específica en un software específico. Lo único que debes hacer es cambiar la definición de macro. Todo lo que tienes que hacer es cambiar el valor de ese componente en particular. El valor correspondiente al componente cambiará. El sistema será personalizado. Sistema personalizado. No es necesario apagar el sistema. El código no requiere esto, pero es posible. Implementar podas.
¥
5.9
La oferta VIP por tiempo limitado de Baidu Encyclopedia está abierta, disfruta de más de 600 millones de contenido VIP
Consíguela ahora p>
La diferencia entre if y #if en el programa STM32
La diferencia entre if y #if en el programa STM32
(1)? declaración condicional y #if es una condición previa Las instrucciones de procesamiento tienen la misma función, pero el ciclo de ejecución es diferente
(2) Ejemplo 1:
#define A 2
#if A==2
void foo()
{
printf("A == 2");
}
página 1
#else
#else
void foo(); #if es una instrucción de preprocesamiento.
p>void foo()
{
printf("A != 2");
}
#endif p>
int main()
{
foo();
}
Página 2
Ejemplo #2:
Esto generará A == 2
Si cambia #define A 2, ¡puede generar A! = 2
#if.
a
#else
b
#endif, de hecho, Esta es la opción para compilar esta parte. La diferencia entre if-else es: cuando se compila en ?selected, si es a, entonces b no se compilará en absoluto. If-else compilará todo y luego se ejecutará.
Página 3
Entonces la pregunta es, en el preprocesamiento en forma de #if #else?, si es a, ¿cuándo se ejecuta el programa? ¿La condición está completa? ¿De lo contrario?, ¿se ejecutará b?
La respuesta es: No, el motivo es (3)
(3) La función de #if: es posible que algunos programas quieran simplemente establecer algunos parámetros para los parámetros #if y luego ejecutar parámetros #if. Es posible que algunos programas quieran simplemente establecer algunos parámetros para que el programa funcione para ellos. Esto se puede lograr simplemente configurando algunos parámetros. Por supuesto, esto también se puede lograr estableciendo variables y escribiendo todo el código posible en el programa. Por supuesto, también se puede lograr configurando variables, es decir, escribiendo todos los códigos posibles en el programa y configurándolo durante la inicialización, pero en diferentes situaciones, puede que solo sea necesario configurar algunos parámetros. Pero en diferentes situaciones, es posible que solo necesites escribir parte del código. Pero en diferentes situaciones, solo se puede escribir una parte del código, por lo que no es necesario escribir el código completo, es posible escribir el código completo. La compilación condicional establece condiciones de compilación mediante instrucciones de precompilación para compilar diferentes códigos cuando surgen diferentes necesidades.
Página 4
¿Y entonces? Una vez compilada la parte de la condición de preprocesamiento, el código en ejecución solo ejecutará la parte del bloque de código que cumple las condiciones durante el tiempo de ejecución. Parte del bloque de código que cumple la condición
En otras palabras, puede establecer diferentes condiciones en el momento de la compilación para compilar diferentes códigos, y las expresiones en la directiva precompilada son las mismas que las expresiones en C? Directiva precompilada Similar a las expresiones en lenguaje C. Las expresiones en directivas precompiladas son básicamente las mismas que las expresiones en lenguaje C. En instrucciones precompiladas se pueden utilizar operaciones lógicas, operaciones aritméticas, operaciones de bits, etc. Debido a que las directivas de precompilación se procesan antes de la compilación, se puede lograr la compilación condicional. Las instrucciones precompiladas se procesan antes de la compilación y, mediante la precompilación, se ingresa el reemplazo de macros, se seleccionan condicionalmente segmentos de código y luego. Luego compila el código final que se compilará. Entonces se completa la compilación.
El significado general de #if es que si el código que sigue a #if no se compila, el código no se compilará. El significado general de #if es que puede usar #if para crear código nuevo si la expresión constante que sigue a #if es verdadera. El significado general de #if es que si la expresión constante después de #if es verdadera, entonces se compilará el código que controla. Por ejemplo, si la condición 1 es verdadera, entonces el segmento de código 1, la condición 1 es verdadera y la condición 1 es verdadera. real. Si la condición 1 es verdadera, se compila el código que controla. Por ejemplo, la condición 1 del segmento de código 1 es verdadera, pero la condición 1 del segmento de código 1 no es verdadera. Luego verifique si la condición 2 es verdadera. Si la condición 2 es verdadera, se compila el segmento de código 2; de lo contrario, se compila el segmento de código 2. Si la condición 2 se convierte en ?, compile el segmento de código 2; de lo contrario, juzgue otras condiciones por analogía. Si la condición 1-N no es ?, compile el último segmento de código n+1.
Página 5
(4) Ventajas de #if: adaptación del sistema
La adaptación del sistema es una forma de optimizar el código fuente del sistema para reducir funciones innecesarias.
/*----------------------------------------- -----------------*/
#incluye "stdio.h"
# definir TEST_2 1
int main()
{
int a=11;
Página 6
#if TEST_2
int *b=&a;
*b = 10;
#endif
a++;
}
/*--------------------------------- - ---------------------------------------*/