Palavra-chave estática em função de parâmetro
-
20-09-2019 - |
Pergunta
Acabei de encontrar esta definição de função em alguns incorporado código:
float round_float_to_4(static float inputval);
Eu estou familiarizado com outros usos para estática (variáveis globais, funções e variáveis locais), mas esta é a primeira vez que eu vê-lo como especificador para o parâmetro da função.Eu suponho que este forças compilador para usar o local de memória fixo para inputval em vez de pilha?
Solução
Isso não é padrão.Eu acho que é a mesma coisa que você, e eu não estou surpreso de tal extensão de compiladores ter incorporado um alvo.
Outras dicas
Isso não é válido.A única válida lugar onde static
pode ser usado em função de um parâmetro estou ciente de que é uma matriz de dimensão
float round_float_to_4(float inputval[static 4]);
Dizendo que inputval
vai, em todas as chamadas a esta função, aponte para a memória, com pelo menos 4
flutua (este é um C99 disso, ele não aparece em C89).
Como por padrão C,
A única especificador de classe de armazenamento que deve ocorrer em um parâmetro a declaração é de se registrar.
Muitos dispositivos embarcados têm um sério pilha limitado, tal recurso seria de grande benefício em reduzir as possibilidades de estouro de pilha, enquanto ainda dando a você a oportunidade para re participante código.
Menor fichas não têm qualquer oportunidade de colocar as variáveis na pilha, de modo que todos os parâmetros são implicitamente localizações de memória.