在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");

...(函数实现)

你能告诉我为什么? TNX


这些只是函数的声明而不是定义。不太清楚为什么count函数被声明了两次。声明只是告诉编译器,这个名字有些东西。或许程序员忘了定义这个方法?

声明提供了一个符号的基本属性:它的类型和名称。 定义提供了该符号的所有细节 - 如果它是一个函数,它做了什么; 如果它是一个班级,它有什么样的领域和方法; 如果它是一个变量,则存储该变量。

例如声明如下所示:

void count(void);

例如,定义如下所示:

void count(void){

......

}

根本没有理由,这只是对原型的毫无意义的重复。


无所谓 - 无论何地对您的程序有意义。 显然,如果它在main中,那么在实际函数实现之前没有其他函数会“知道”函数原型是什么,这可能会产生影响。

我个人倾向于在函数调用之前实现该函数,这样可以避免将原型放置在何处的问题[除非它放在头文件中,在这种情况下,这往往会解决问题]。

链接地址: http://www.djcxy.com/p/72183.html

上一篇: declare a function in main?

下一篇: What these C's main function indicates?