Página 1 de 1

warning dificil de achar a causa "guard include" ou wrapper

MensagemEnviado: 20 Jun 2015 09:50
por RobL
Guard include or wrapper #ifndef
Se encontrar esse famoso warning: <Warning 1 implicit declaration of function>..., normalmente foi esquecido de escrever o protótipo da função no header.
Se o trabalho for feito por mais de uma pessoa e um dos arquivos foi renomeado e esqueceram de mudar o nome dele no "guard include" e este "guard include" tem o mesmo nome usado em outro arquivo, você receberá essa advertência.
Escrevendo outra vez:
O problema surge por que o nome do "guard include" no arquivo renomeado, ficou igual ao de outro arquivo. O arquivo foi renomeado, pois tinha o mesmo nome de outro arquivo.

Encontrar o motivo será bem difícil, pois o arquivo head relacionado ao .c onde onde se encontra a função está correto e seu "guard include" também está correto.
O problema está em um dos arquivos head onde o arquivo foi renomeado e ficou nele o mesmo "guard include".
Certamente tem alguma forma de observar passo a passo o que está sendo feito pelo toolchain, aí seria mais fácil de encontrar, mas tenho dúvidas se daria para encontrar nesse caso específico.

Infelizmente, por parecer um erro banal, usei o velho método da tentativa e erro e leituras na internet. Não sei mais como foi que descobri o problema. Acho que esbarrei no erro sem querer quando tentei reescrever o nome do "guard include" novamente para ver se havia alguma letra que minha mente não estava decifrando corretamente e algo na IDE me chamou atenção.
Talvez um expert levasse pouco tempo para descobrir. Eu levei horas...

Bom espero que este escrito poupe tempo de quem cair em algo parecido. Deve ocorrer com variáveis também.

Re: warning dificil de achar a causa "guard include" ou wrap

MensagemEnviado: 20 Jun 2015 14:19
por RobL
Esqueci de narrar o comportamento:

O processo de compilação não encontrava o protótipo da função, colocado corretamente no seu .h correspondente ao .c.
Colocando o protótipo da função no topo do arquivo .c, este era lido sem emitir a advertência (warning).

Creio que o mesmo deve dar uma boa dor de cabeça com uma declaração extern de uma definição de variável no .c relacionado. Não vai encontrar esta declaração no .h, apesar dela estar lá.
Retirando a duplicação do "guard include" tudo volta a perfeita harmonia.
Como coloquei, este erro é mais provável ocorrer quando o programa for feito por mais de um programador.

Re: warning dificil de achar a causa "guard include" ou wrap

MensagemEnviado: 20 Jun 2015 15:42
por vtrx
O compilador C precisa alocar memória primeiro para as rotinas e sub-rotinas,ou ele não conseguirá produzir um código ASM utilizável.