Conflicting type in C but no clear difference between lines : <p>I am trying to run a model written by someone else. When running the make file, I get the following error regarding one of the fonctions: </p>

<pre><code>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 *);
</code></pre>

<p>I feel like it must be a silly mistake, bu my C is really rusty at this point, and I just can't identify the error. I've tried removing all the differences: adding an <code>x</code> in the first definition, removing the <code>funk</code>, but those changes seem to only make things worse. </p>

<p>For info, I am on MacOSX 10.11. Here is the code from the definition till the end:</p>

<pre><code>/* 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, &amp;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 &lt;= i__1; ++j) {
        sum += func_((U_fp)funk, &amp;x);
        x += ddel;
        sum += func_((U_fp)funk, &amp;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)(&amp;r__1) / *x;
    return ret_val;
} /* func_ */
</code></pre>
