次のコードでは、コンパイル時に関数 fun2() の型が競合しているためにエラーが発生します。
#include<stdio.h>
#include<stdlib.h>
char *** fun(){
char *** b;
calloc(10,sizeof(char **));
b[0]=fun2();
return b;
}
char ** fun2(){
char **a;
a=calloc(10,sizeof(char*));
a[0]=calloc(10,sizeof(char));
return a;
}
main(){
char **c;
c=fun();
}
ただし、このコードはそうではありません -
#include<stdio.h>
#include<stdlib.h>
char *** fun(){
char *** b;
calloc(10,sizeof(char **));
b=fun2();
char **a;
a=calloc(10,sizeof(char*));
a[0]=calloc(10,sizeof(char));
return a;
}
main(){
char **c;
c=fun();
}
ただし、両方のプログラムが同じタスクを実行しています。コンパイルエラーの背後にある理由は何ですか?