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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top