[C] Błędy podczas kompilowania, liczenie silnii

Dzień dobry,

 

Zwracam się z uprzejmą prośbą, o podpowiedź, co w moim kodzie jest złego, że kompilator krzyczy błędami ?

Program ma policzyć silnię.

#include <stdio.h>
 
int silnia ( int n );
 
int main()
{
   int n=4, sil=silnia(n) ;
   printf("\n %5i! = %5i\n\n", n, sil);
 
   return 0;
}
 
int silnia ( int n )
{
   if ( n==0 || n<0 )
      { return 1; }
   else
      {
         int i=1, silnia=1;  
         while ( i<= n )
            {
               silnia *= i;
               i++;
            }
         return silnia;
       }
}

Jakimi dokładnie błędami? Ideone np. nic nie wykrywa: http://ideone.com/Xaekpa