Meu compilador (GCC) está me dando o aviso:
aviso: declaração implícita de função
Por favor, me ajude a entender por que está chegando.
c
compiler-warnings
Angus
fonte
fonte
Respostas:
Você está usando uma função para a qual o compilador ainda não viu uma declaração (" protótipo ").
Por exemplo:
Você precisa declarar sua função antes de main, assim, diretamente ou em um cabeçalho:
fonte
O caminho certo é declarar protótipo de função no cabeçalho.
Exemplo
main.h
main.c
Alternativa com um arquivo (main.c)
fonte
Quando você fizer suas #includes em main.c, coloque a referência #include no arquivo que contém a função referenciada na parte superior da lista de inclusão. por exemplo, diga que este é main.c e sua função referenciada está em "SSD1306_LCD.h"
O exemplo acima não gerará o erro "declaração implícita de função", mas abaixo o
Exatamente a mesma #include list, apenas ordem diferente.
Bem, fez por mim.
fonte
Quando você obtém o
error: implicit declaration of function
arquivo, também deve listar a função incorreta. Geralmente, esse erro ocorre devido a um arquivo de cabeçalho esquecido ou ausente, portanto, no prompt do shell, você pode digitarman 2 functionname
e olhar para aSYNOPSIS
seção na parte superior, pois esta seção listará todos os arquivos de cabeçalho que precisam ser incluídos. Ou tente http://linux.die.net/man/ Estas são as páginas de manual on-line, com links e fáceis de pesquisar. As funções são frequentemente definidas nos arquivos de cabeçalho, incluindo todos os arquivos de cabeçalho necessários. Como cnicutar disse,fonte
Se você tiver os cabeçalhos corretos definidos e estiver usando uma
GlibC
biblioteca que não seja (como Musl C )gcc
, também será lançadaerror: implicit declaration of function
quando extensões GNU comomalloc_trim
as encontradas.A solução é agrupar a extensão e o cabeçalho :
fonte
Você precisa declarar a função desejada antes da sua função principal :
fonte
Eu acho que a pergunta não está 100% respondida. Eu estava procurando um problema com a falta de typeof (), que é a diretiva de tempo de compilação.
Os links a seguir irão esclarecer a situação:
https://gcc.gnu.org/onlinedocs/gcc-5.3.0/gcc/Typeof.html
https://gcc.gnu.org/onlinedocs/gcc-5.3.0/gcc/Alternate-Keywords.html#Alternate-Keywords
a partir de conculsion tentar usar
__typeof__()
. Tambémgcc ... -Dtypeof=__typeof__ ...
pode ajudar.fonte