私は他の誰かが書いたモデルを実行しようとしています。メイクファイルを実行すると、私は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_ */
「extern real func _(...)」を見てください。この行を削除しようとしましたか? – orbitcowboy
@MartinEttl:投稿したコード全体を見れば、問題のある行の前にfunc_が実際に使用されているので、最初の宣言「extern real func _...」を削除すると、あまりうまくいかないでしょうか? –
U_fpとR_fpは何ですか? –