このコードを gcc 4.7.2 (Ubuntu Server 12.10) でコンパイル中に問題が発生しました。
#include <stdio.h>
int main()
{
long int facto = 30;
printf("%ld\n", fact(facto, facto - 1);
}
long int fact(long int n, long int a)
{
if (a == 1)
return (n);
fact(n * a, a - 1);
}
これは 1 つの引数関数で実行できることはわかっていますが、ここでのポイントではありません。
私が得たエラーは次のとおりです。「ファクト」のタイプが競合しています(関数宣言の行)ここでファクトの以前の暗黙の宣言(printfの行)