C 静态声明‘;显示菜单’;遵循非静态声明
为什么我总是犯这个错误?帮帮我,这是Homerowrk。我显然不熟悉编程帮助。 $gcc家庭作业 c:在函数“main”中: 作业c:32:6:错误:“DisplayMenu”的静态声明跟在非静态声明之后 作业。c:11:7:注:“显示菜单”的先前声明在此C 静态声明‘;显示菜单’;遵循非静态声明,c,static,defined,C,Static,Defined,为什么我总是犯这个错误?帮帮我,这是Homerowrk。我显然不熟悉编程帮助。 $gcc家庭作业 c:在函数“main”中: 作业c:32:6:错误:“DisplayMenu”的静态声明跟在非静态声明之后 作业。c:11:7:注:“显示菜单”的先前声明在此 #include <stdio.h> void DisplayMenu(); void numberPlus10(); void numberTimes2(); void numberMinus1(); void numberT
#include <stdio.h>
void DisplayMenu();
void numberPlus10();
void numberTimes2();
void numberMinus1();
void numberTimesnumber();
int main (void)
{
int choice;
void DisplayMenu();
scanf("%i", &choice);
switch (choice)
{
case 1:
numberPlus10();
break;
case 2:
numberTimes2();
break;
case 3:
numberMinus1();
break;
case 4:
numberTimesnumber();
break;
default:
break;
}
void DisplayMenu()
{
printf("1. Number + 10\n");
printf("2. Number * 2\n");
printf("3. Number - 1\n");
printf("4. Number * Number\n");
}
void numberPlus10()
{
int x;
printf("Please enter a number:\n");
scanf("%i", &x);
printf("Your number + 10 is %i\n", x + 10);
}
void numberTimes2()
{
int x;
printf("Please enter a number:\n");
scanf("%i", &x);
printf("Your number * 2 is %i\n", x * 2);
}
void numberMinus1()
{
int x;
printf("Please enter a number:\n");
scanf("%i", &x);
printf("Your number - 1 is %i\n", x - 1);
}
void numberTimesnumber()
{
int x;
printf("Please enter a number:\n");
scanf("%i", &x);
printf("Your number squared is %i\n", x * x);
}
}
#包括
void DisplayMenu();
void numberPlus10();
void numberTimes2();
void numberMinus1();
void numberTimesnumber();
内部主(空)
{
智力选择;
void DisplayMenu();
scanf(“%i”和“选择”);
开关(选择)
{
案例1:
numberPlus10();
打破
案例2:
numberTimes2();
打破
案例3:
numberMinus1();
打破
案例4:
numberTimesnumber();
打破
违约:
打破
}
void DisplayMenu()
{
printf(“1.数字+10\n”);
printf(“2.编号*2\n”);
printf(“3.编号-1\n”);
printf(“4.编号*编号\n”);
}
void numberPlus10()
{
int x;
printf(“请输入一个数字:\n”);
scanf(“%i”和“&x”);
printf(“您的号码+10是%i\n”,x+10);
}
void numberTimes2()
{
int x;
printf(“请输入一个数字:\n”);
scanf(“%i”和“&x”);
printf(“您的编号*2是%i\n”,x*2);
}
void numberMinus1()
{
int x;
printf(“请输入一个数字:\n”);
scanf(“%i”和“&x”);
printf(“您的编号-1是%i\n”,x-1);
}
void numberTimesnumber()
{
int x;
printf(“请输入一个数字:\n”);
scanf(“%i”和“&x”);
printf(“您的数字平方是%i\n”,x*x);
}
}
在C中,我们不在任何块中实现函数。相反,职能应在全球范围内实施
拆下最后一个右支架,并将其放在int main(void)
中的开关结束后,这样就不会再有错误了
编辑:
首先。。我确信以上就是您的源代码无法编译的原因
另外,请检查David的答案,因为我们都认为您在打算调用函数时做了函数声明——尽管这个错误没有触发编译时错误。陈鹏宇当然是对的!但是你还有一个错误
int choice;
void DisplayMenu(); // You should not declare a function here.
scanf("%i", &choice);
我猜您打算调用这个函数-所以只需从行的开头删除“void”
int choice;
DisplayMenu(); // Call DisplayMenu
scanf("%i", &choice);
而且。。。请阅读语言规范不,这不是问题所在<代码>您不能在另一个函数中声明函数。
确实可以。对。但是TS显然打算调用函数而不是声明它。抱歉,但我要指出的是,实际上我还没有检查语言规范,所以我不知道在C的标准中是如何处理的。然而,在GCC4.7.2
中,在另一个函数中声明函数是合法的,它只声明一种语言。在编译时,它不会生成任何错误(但在链接时,如果您尝试调用该函数,但它在任何地方都没有实现,它会生成任何错误。)哦,是的,这是真的。我没注意到。XD感谢您指出这一点。