Dirigindo-se advertências tala sobre as funções “não utilizadas”, enquanto eles são passados ??como parâmetros
Pergunta
Em um programa de mim, o verificador tala adverte:
expat-test.c:23:1: Function exported but not used outside expat-test: start
A declaration is exported, but not used outside this module. Declaration can
use static qualifier. (Use -exportlocal to inhibit warning)
expat-test.c:38:1: Definition of start
A função de arranque ()
XML_SetElementHandler(parser, start, end);
eo analisador chama-lo de volta em alguns pontos. Este é um estilo muito comum em C e eu me pergunto por tala reclama. I encontrar nada no FAQ ou na manual do .
Solução
Você chama XML_SetElementHandler()
na mesma unidade de tradução (normalmente o arquivo de origem .c) em que start()
está definido? Se assim for, o aviso pode ser correto:. Add static
para a definição da função e verifique se o seu aplicativo ainda links sem erros
Outras dicas
O 'estático' palavra-chave efetivamente esconde o nome de uma função de outras unidades de tradução (arquivo .C, geralmente). O código ainda está lá, ea partir desse arquivo C você pode obter o endereço da função (mas não de outros arquivos C). Você pode, então, passar o endereço para outras unidades de tradução, quer chamando funções, ou devolver o endereço de uma função, ou armazenando-o em uma variável global, etc.
I tendem a declarar todas as funções que não estão sendo exportados como estático. Foi-me ensinado e atualmente acreditam que é uma boa prática para fazê-lo. (Aviso: Tal como acontece com a maioria das coisas, existem inúmeras excepções a esta 'regra'.)