'DisplayMenu'的静态声明遵循非静态声明

时间:2013-03-15 07:44:43

标签: c static defined

为什么我一直收到此错误?帮助我这是家庭主妇。我很擅长编程帮助。 $ gcc homework.c homework.c:在函数'main'中: homework.c:32:6:错误:'DisplayMenu'的静态声明遵循非静态声明 homework.c:11:7:注意:之前的'DisplayMenu'声明就在这里

#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);
}

}

2 个答案:

答案 0 :(得分:0)

在C中,我们不在任何块内实现函数。相反,功能应在全球范围内实施。

删除最后一个右括号,并在switch int main(void)结束后立即放置,并且不会再出现错误。

<强>编辑:

首先..我确信上面是您的源代码无法编译的原因。

另外,请检查David的答案,因为我们都相信你在打算调用它时发出了函数声明 - 虽然这个错误没有触发编译时错误。

答案 1 :(得分:0)

陈鹏宇当然是对的!但!那里有另一个错误。

 int choice;
 void DisplayMenu();  // You should not declare a function here.
 scanf("%i", &choice);   

我想你打算调用这个函数 - 所以只需从行的开头删除“void”。

 int choice;
 DisplayMenu();   // Call DisplayMenu
 scanf("%i", &choice);   

并且......请阅读语言规范

相关问题