2012-03-11 76 views
1

我是全新的C++和我使用的Eclipse。C++ |主要功能错误|初学者

但是...我不知道为什么我在主函数得到这个错误:

ERROR: ::main must return int

我的代码是:

void main() 
{ 
char a; 
while (a!='q') 
{ 
    string ln = "enter option: "; 
    cout<< ln; 

    switch(a) 
    { 
    case 1: 
     if (a=='1') 
      func1(); 
     break; 
    case 2: 
     if (a=='2') 
      break; 
     break; 
    } 
} 
} 

回答

5

因为在C++中,main功能必须有返回类型为int

您的返回类型为void的版本不正确,并且正在被编译器正确拒绝。

刚刚从

void main() 

改变声明

int main() 

还有另外一种形式,您可以处理命令行程序传递参数。它看起来像这样:

int main (int argc, char *argv[]) 

但是当你刚开始学习C++,并试图打印的“Hello World”在屏幕上,这可能不是你需要担心的东西。你最终会到达那里。

并考虑更新您用来学习C++的书。如果入口点的函数签名错误,那么其他更复杂的事情也可能会出错?!第一次学习语言错误没有意义。建议的书籍列表可用here

+0

等一下,你min主要是一个无效类型的函数?我很确定我已经看到void main()之前 – 2012-03-11 11:47:10

+0

@Bogdan:这不会是正确的C++。其他语言可能会使用'void'作为主函数的类型,如C#。此外,一些非常古老的编译器支持'void main',但它从来没有标准或正确。 – 2012-03-11 11:49:30

+0

你会经常看到它,通常在糟糕的教科书中,一些编译器甚至会允许它,但它仍然是错误的。 – 2012-03-11 11:50:31

1

的返回类型应该是int

int main (void)

int main (int argc, char *argv[])

2

你必须改变你的void main()int main()

在C++中不能有没有任何返回的主函数。

2
char a; 
while (a!='q') 

您正在比较未初始化的变量和字母q。从未初始化的变量读取调用未定义的行为。如果您不幸,a!='q'可能是错误的。将char a;更改为char a = 0;(或其他任何非q值),或将do循环替换为do-while循环。