C中的冲突类型但行之间没有明显的区别

Cyn*_* GS -2 c

我正在尝试运行其他人编写的模型.运行make文件时,我收到有关其中一个功能的以下错误:

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 *);
Run Code Online (Sandbox Code Playgroud)

我觉得这肯定是一个愚蠢的错误,我的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_ */
Run Code Online (Sandbox Code Playgroud)

eml*_*lai 5

该声明有,U_fp但定义有R_fp.