为什么函数不能在Main之后

时间:2013-07-16 11:57:13

标签: c++ visual-studio-2010

为什么我不能在main之后放一个函数,visual studio无法构建程序。这是C ++怪癖还是Visual Studio怪癖?

例如

int main()
{
   myFunction()
}

myFunction(){}

会产生一个主要不能使用myFunction的错误

10 个答案:

答案 0 :(得分:25)

你可以,但你必须事先声明:

void myFunction(); // declaration

int main()
{
   myFunction();
}

void myFunction(){} // definition

请注意,函数需要返回类型。如果函数没有返回任何内容,则该类型必须为void

答案 1 :(得分:9)

您不能使用名称/符号 声明。这就是全部原因。

就像这样:

i = 10;  //i not yet declared

int i;

那也是错误,完全出于同样的原因。编译器不知道i 是什么 - 它并不真正关心的内容。

就像你写这个(这对你和编译器也有意义):

int i;  //declaration (and definition too!)

i = 10;  //use

你写这个:

void myFunction(); //declaration!

int main()
{
   myFunction() //use
}

void myFunction(){}  //definition

希望有所帮助。

答案 2 :(得分:2)

由于

myFunction()
在使用之前必须声明

。这通常是c ++行为。

答案 3 :(得分:1)

你必须转发声明一个函数,所以main可以知道有一些。

void myFunction();

int main()
{
   myFunction();
}

void myFunction(){}

不要忘记在每个命令之后放置;

答案 4 :(得分:1)

大多数计算机编程语言都有自上而下的方法,这意味着代码是从顶部编译的。当我们在main函数之后定义一个函数并在main [myFunction()]中使用它时,编译器认为"这是什么。我从来没有见过这个"并且它会生成一个错误,说明未声明myFunction。如果要以这种方式使用,则应在定义main函数之前为该函数提供原型。但有些编译器在没有原型的情况下接受。

#include<stdio.h>
void myFunction(); //prototype
int main()
{
   myFunction(); //use 
}

myFunction(){ //definition 
.......;
}

答案 5 :(得分:0)

在使用之前需要声明函数:

void myFunction();

int main() {
  myFunction();
}

void myFunction() {
  ...
}

答案 6 :(得分:0)

当然可以,先申报。或者更好的是,将声明放在标题中,并将#include放在源文件中。

void myFunction();

int main()
{
   myFunction();
}

void myFunction(){}

答案 7 :(得分:0)

在调用函数之前指定函数声明。因此编译器将知道返回类型和签名

答案 8 :(得分:0)

你必须先申报这个功能。

void myFunction();

int main()
{
    myFunction()
 }

 myFunction(){}

答案 9 :(得分:-1)

声明然后定义。

void func();
int main()
{
    func();
}
void func()
{
}