2016-05-13 4 views
-2

私は他の誰かが書いたモデルを実行しようとしています。メイクファイルを実行すると、私はfonctionsの1について次のエラーを取得する:Cで競合するタイプですが、行間に明確な違いはありません

ground_layer.c:4391:6: error: conflicting types for 'func_' 
real func_(R_fp funk, real *x) 
    ^
ground_layer.c:4360:17: note: previous declaration is here 
    extern real func_(U_fp, real *); 

それは愚かな間違いでなければならないように私は感じて、府私のCは、この時点では本当に錆びている、と私はできませんエラーを特定します。私はすべての違いを取り除こうとしました:最初の定義にxを追加してfunkを削除しましたが、それらの変更は状況を悪化させるようです。

私はMacOSX 10.11です。ここで最後まで定義からのコードは次のとおりです。

/* Local variables */ 
    static real a, b; 
    static integer j; 
    static real x; 
    static integer it; 
    static real del, tnm, sum, ddel; 
    extern real func_(U_fp, real *); 

/* ********************************************************************** */ 
    b = exp(-(*aa)); 
    a = 0.f; 
    if (*n == 1) { 
    r__1 = (a + b) * .5f; 
    *s = (b - a) * func_((U_fp)funk, &r__1); 
    it = 1; 
    } else { 
    tnm = (real) it; 
    del = (b - a)/(tnm * 3.f); 
    ddel = del + del; 
    x = a + del * .5f; 
    sum = 0.f; 
    i__1 = it; 
    for (j = 1; j <= i__1; ++j) { 
     sum += func_((U_fp)funk, &x); 
     x += ddel; 
     sum += func_((U_fp)funk, &x); 
     x += del; 
/* L11: */ 
    } 
    *s = (*s + (b - a) * sum/tnm)/3.f; 
    it *= 3; 
    } 
    return 0; 
} /* midexp_ */ 

/* ********************************************************************** */ 
/* ********************************************************************** */ 
real func_(R_fp funk, real *x) 
{ 
    /* System generated locals */ 
    real ret_val, r__1; 

    /* Builtin functions */ 
    double log(doublereal); 

/* ********************************************************************** */ 
    r__1 = -log(*x); 
    ret_val = (*funk)(&r__1)/*x; 
    return ret_val; 
} /* func_ */ 
+0

「extern real func _(...)」を見てください。この行を削除しようとしましたか? – orbitcowboy

+0

@MartinEttl:投稿したコード全体を見れば、問題のある行の前にfunc_が実際に使用されているので、最初の宣言「extern real func _...」を削除すると、あまりうまくいかないでしょうか? –

+2

U_fpとR_fpは何ですか? –

答えて

5

宣言はU_fpを持っていますが、定義はR_fpを持っています。

+0

ああ!私はそれがばかだと分かっていた。どういうわけか、定義内の実際のパラメータは型が尊重されている限り重要ではないと思っていましたが、私が間違っていたように見えます。超高速回答に感謝します。 –

+0

最終的にはちょっと愚かな質問なので、それを閉じたり削除したりする必要はありませんか? –

+0

@CynthiaGS upvoted答えがあるので、私はあなたがそれを削除できるとは思わない。 – user3386109

関連する問題