为什么在main中重新声明一个函数?

MNY*_*MNY 8 c

一些例子我遇到一个处理菜单的程序..

他在main函数之前声明了所有函数,因为我理解应该是,然后在main中也提到了一个函数,它是一个void函数:

char get_choice(void);
char get_first(void);
int get_int(void);
void count(void);
int main(void)
{
    int choice;
    void count(void);
    while ( (choice = get_choice()) != 'q')
    {
        switch (choice)
        {
            case 'a' : printf("Buy low, sell high.\n");
                break;
            case 'b' : putchar('\a'); /* ANSI */
                break;
            case 'c' : count();
                break;
            default : printf("Program error!\n");
                break;
        }
    }
    printf("Bye.\n");
Run Code Online (Sandbox Code Playgroud)

......(功能实现)

你能告诉我为什么吗?TNX

unw*_*ind 6

没有理由,这只是原型的无意义重复.


Bri*_*n J 4

这些只是函数的声明而不是定义。虽然不太确定为什么 count 函数被声明两次。声明只是告诉编译器有这个名称的东西。也许程序员忘记定义该方法?

声明提供符号的基本属性:其类型和名称。定义提供了该符号的所有细节——如果它是一个函数,它的作用是什么;如果它是一个函数,它的作用是什么?如果它是一个类,它有哪些字段和方法;如果它是一个变量,则该变量的存储位置。

例如声明如下:

void count(void);
Run Code Online (Sandbox Code Playgroud)

例如定义如下:

void count(void){

......

}
Run Code Online (Sandbox Code Playgroud)