Derleyicim (GCC) bana uyarı veriyor:
uyarı: fonksiyonun örtük bildirimi
Lütfen neden geldiğini anlamama yardım edin.
Derleyicinin henüz bir bildirim ("prototype") görmediği bir işlev kullanıyorsunuz.
Örneğin:
int main()
{
fun(2, "21"); /* The compiler has not seen the declaration. */
return 0;
}
int fun(int x, char *p)
{
/* ... */
}
İşlevinizi main'den önce, doğrudan ya da bir başlık içinde aşağıdaki gibi bildirmeniz gerekir:
int fun(int x, char *p);
Doğru yol, işlev prototipini başlıkta bildirmektir.
#ifndef MAIN_H
#define MAIN_H
int some_main(const char *name);
#endif
main.c
#include "main.h"
int main()
{
some_main("Hello, World\n");
}
int some_main(const char *name)
{
printf("%s", name);
}
Tek dosya ile alternatif (main.c)
static int some_main(const char *name);
int some_main(const char *name)
{
// do something
}
Doğru başlıkları tanımladıysanız & GlibC
olmayan bir kütüphane kullanıyorsanız (örneğin Musl C) gcc
ayrıca malloc_trim
gibi GNU uzantılarıyla karşılaşıldığında error: implicit declaration of function
atacaktır.
Çözüm uzantıyı & başlığa sarmak şeklindedir:
#if defined (__GLIBC__)
malloc_trim(0);
#endif