Ich versuche ein Modell zu erstellen, das von jemand anderem geschrieben wurde. Wenn die Make-Datei ausgeführt wird, erhalte ich die folgenden Fehler eines des fonctions zu:Widersprüchlicher Typ in C, aber kein klarer Unterschied zwischen Zeilen
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 *);
Ich fühle mich wie es ein dummer Fehler sein muss, bu mein C ist an dieser Stelle wirklich rostig, und ich kann es einfach nicht Identifizieren Sie den Fehler. Ich habe versucht, alle Unterschiede zu entfernen: Hinzufügen einer x
in der ersten Definition, Entfernen der funk
, aber diese Änderungen scheinen nur die Dinge noch schlimmer machen.
Für Informationen, bin ich auf MacOSX 10.11. Hier ist der Code von der Definition bis zum Ende:
/* 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_ */
Schauen Sie sich 'extern real func _ (...)' an. Hast du versucht, diese Zeile zu entfernen? – orbitcowboy
@MartinEttl: wenn Sie sich den ganzen Code anschauen, den ich gepostet habe, wird func_ tatsächlich vor der problematischen Zeile verwendet, also wird das Entfernen der ursprünglichen Deklaration 'extern real func _... 'wahrscheinlich nicht viel nützen, oder? –
Was sind U_fp und R_fp? –