Especificadores de classe de armazenamento com declarações de função
É possível usar o especificador static
ou o especificador de classe de armazenamento extern
em declarações de função. As funções sempre têm tempos de vida globais.
Seção específica da Microsoft
As declarações de função no nível interno têm o mesmo significado que as declarações de função no nível externo. Isso significa que uma função é visível do ponto de declaração durante o restante da unidade de conversão mesmo que seja declarada no escopo local.
Fim da seção específica da Microsoft
As regras de visibilidade para funções variam ligeiramente das regras para as variáveis, como segue:
Uma função declarada como
static
é visível apenas no arquivo de origem em que é definida. As funções no mesmo arquivo de origem podem chamar a funçãostatic
, mas as funções em outros arquivos de origem não podem acessá-la diretamente pelo nome. É possível declarar outra funçãostatic
com o mesmo nome em outro arquivo de origem sem conflito.As funções declaradas como
extern
são visíveis em todos os arquivos de origem do programa (a menos que sejam redeclaradas posteriormente comostatic
). Qualquer função pode chamar uma funçãoextern
.As declarações de função que omitem o especificador de classe de armazenamento são
extern
por padrão.
Seção específica da Microsoft
A Microsoft permite a redefinição de um identificador extern
como static
.
Fim da seção específica da Microsoft