在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