Ich bin gerade auf den C-Code von jemandem gestoßen, bei dem ich verwirrt bin, warum er kompiliert wird. Es gibt zwei Punkte, die ich nicht verstehe.
Erstens hat der Funktionsprototyp keine Parameter im Vergleich zur tatsächlichen Funktionsdefinition. Zweitens hat der Parameter in der Funktionsdefinition keinen Typ.
#include <stdio.h>
int func();
int func(param)
{
return param;
}
int main()
{
int bla = func(10);
printf("%d", bla);
}
Warum funktioniert das? Ich habe es in einigen Compilern getestet und es funktioniert gut.
-Wstrict-prototypes
sowohl für die int func()
und int main()
: xc: 3: Warnung: Funktionsdeklaration nicht ein Prototyp. Sie sollten erklären , main()
wie main(void)
auch.
int func();
ist kompatibel mit int func(arglist) { ... }
.
int main(void)
.