2012-02-19 6 views
0

これはcでポインタを使った経験がある人にとっては簡単な答えだと確信していますが、現時点で私のエラーを見るのは苦労しています。私は、関数の戻り値の型がポインタであっても、関数からの戻り値の呼び出しが整数からのポインタを作るという警告を受け取ります。また、関数に矛盾する型があるというエラーを取得します。ここにコードがありますが、私は関数の本体を削除しましたが、私はまだエラーと警告を受け取ります。関数とキャスト警告の型が競合していますか?

long long *merge_sort(long long * arr, int size){ 
// Arrays shorter than 1 are already sorted 
if(size > 1){ 
    int middle = size/2, i; 
    long long *left, *right; 
    left = arr; 
    right = arr + middle; 

    left = merge_sort(left, middle); 
    right = merge_sort(right, size-middle); 
    return merge(left,right); 
}else { return arr; } 
} 

long long *merge(long long * left, long long * right){ 

} 

答えて

7

はあなたの機能mergemerge_sort上記宣言する必要があります。

// forward declaration 
long long *merge(long long * left, long long * right); 

long long *merge_sort(long long * arr, int size){ 
// Arrays shorter than 1 are already sorted 
if(size > 1){ 
    int middle = size/2, i; 
    long long *left, *right; 
    left = arr; 
    right = arr + middle; 

    left = merge_sort(left, middle); 
    right = merge_sort(right, size-middle); 
    return merge(left,right); 
}else { return arr; } 
} 

long long *merge(long long * left, long long * right){ 

} 
+0

うわー、このような単純なエラー:コンパイラがまだ宣言されていない関数の呼び出しを見たとき、それは自動的にそれがintを返し前提としています。ありがとう、結構です – Shane

関連する問題