错误:重新定义;不同的基本类型

时间:2013-05-22 18:47:13

标签: c

我写了一个基本的递归代码,但发生了错误:

重新定义;不同的基本类型

以下是代码:

int m=1; 
void countDown(int n) 
{ /* count down */ 
    printf("Count down: %d\t", n--); 
    if(n<1) return; /* terminate recursion */ 
    else countUP(n); /* start/continue indirect recursion */ 
} 

void countUP(int n) 
{ 
    printf("up: %d\n", m++); 
    countDown(n); 
    /* indirect recursion */ 
}

void main()
{

    countDown(5);
    return;
}

1 个答案:

答案 0 :(得分:4)

countDown中,您使用到目前为止尚未声明的函数countUP。根据{{​​3}}的§3.3.2.2,当一个函数在使用时未声明时,它被声明为隐式地

extern int countUP();

稍后,您实际上声明(和实施)countUP,但是void countUP(int n),它与上述签名不符。

通过添加

来声明countUP
void countUP(int n);
countDown之前的

。当你在这里时,你也应该

#include <stdio.h>

代表printf