2013-03-15 105 views
0

为什么我一直得到这个错误?帮助我这是homeowrk。我对编程帮助很陌生。 $ gcc homework.c homework.c:函数'main': homework.c:32:6:error:'DisplayMenu'的静态声明遵循非静态声明 homework.c:11:7:note: 'DisplayMenu'先前的声明在这里'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); 
} 

} 

回答

0

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

删除最后一个右括号,并在switch的末尾int main(void)之后放置,并且不应再有错误。

编辑:

首先..我敢肯定,上面就是为什么你的源代码编译失败。

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

0

彭钰陈现在是对的!但!你有另一个错误。

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

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

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

而且......请阅读语言规格

+0

不,这不是问题。 “你不能在另一个里面声明一个函数。”的确我们可以。 – starrify 2013-03-15 08:03:36

+0

没错。但TS显然打算调用函数而不是声明它。 – 2013-03-15 08:06:44

+0

对不起,但我会指出,实际上我没有检查语言规范,所以我不知道C标准是如何处理的。但是,在'GCC 4.7.2'中,声明一个函数在另一个函数内,除了声明一种语言之外什么都不做。并且在编译时它不会产生任何错误(但是在联系时间内,如果您尝试调用该函数并且它没有在任何地方实现)。 – starrify 2013-03-15 08:08:58