13

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

例如。

int main()
{
   myFunction()
}

myFunction(){}

会产生 main 不能使用 myFunction 的错误

4

9 回答 9

34

可以,但必须事先声明:

void myFunction(); // declaration

int main()
{
   myFunction();
}

void myFunction(){} // definition

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

于 2013-07-16T11:58:35.083 回答
11

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

它是这样的:

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

希望有帮助。

于 2013-07-16T11:58:54.920 回答
2

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

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

myFunction(){ //definition 
.......;
}
于 2017-10-11T05:40:29.040 回答
1

因为

myFunction()

必须在使用前声明。这是一般的 c++ 行为。

于 2013-07-16T11:58:42.697 回答
0

函数需要先声明才能使用:

void myFunction();

int main() {
  myFunction();
}

void myFunction() {
  ...
}
于 2013-07-16T11:59:07.990 回答
0

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

void myFunction();

int main()
{
   myFunction();
}

void myFunction(){}

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

于 2013-07-16T11:59:15.920 回答
0

在调用函数之前指定函数声明。这样编译器就会知道返回类型和签名

于 2013-07-16T12:00:15.453 回答
0

声明然后定义。

void func();
int main()
{
    func();
}
void func()
{
}
于 2021-03-26T07:48:07.537 回答
-1

您必须先声明该函数。

void myFunction();

int main()
{
    myFunction()
 }

 myFunction(){}
于 2013-07-16T12:00:55.643 回答