Pregunta

Me acabo de encontrar esta definición de la función en algún código incrustado:

float round_float_to_4(static float inputval);

Estoy familiarizado con otros usos para estáticas (variables globales, funciones y variables locales), pero esta es la primera vez que lo veo como especificador de parámetro de función. Asumo que este compilador obliga a utilizar la posición de memoria fija para inputval en lugar de pila?

¿Fue útil?

Solución

Esto no es estándar. Supongo que lo mismo que usted, y no me sorprende de esa extensión en los compiladores tienen un objetivo incrustado.

Otros consejos

Eso no es válido. El único lugar válido donde static se puede utilizar en un parámetro de función yo sepa es en una dimensión array

float round_float_to_4(float inputval[static 4]);

Al decir que inputval será, en todas las llamadas a esta función, seleccione la memoria que proporciona al menos flotadores 4 (esto es una adición C99, que no aparece en C89).

según la norma C,

  

El único especificador de clase de almacenamiento que se producirá en un parámetro   declaración es registrarse.

Muchos dispositivos integrados tienen una pila seriamente limitado, una característica de este tipo sería de gran beneficio en la reducción de las posibilidades de desbordamiento de pila, mientras que todavía le da la oportunidad de volver código de participante.

chips más pequeños no tienen ninguna oportunidad de poner las variables en la pila, por lo que todos los parámetros están implícitamente posiciones de memoria.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top