簡體   English   中英

為什么函數不能在 Main 之后

[英]Why can't a function go after Main

為什么我不能在main之后放一個函數,visual studio無法構建程序。 這是 C++ 的怪癖還是 Visual Studio 的怪癖?

例如。

int main()
{
   myFunction()
}

myFunction(){}

會產生 main 不能使用 myFunction 的錯誤

你可以,但你必須事先聲明:

void myFunction(); // declaration

int main()
{
   myFunction();
}

void myFunction(){} // definition

請注意,函數需要返回類型。 如果函數不返回任何內容,則該類型必須為void

您不能使用它尚未宣布名稱/符號 這就是全部原因。

它是這樣的:

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

希望有幫助。

大多數計算機編程語言都有自頂向下的方法,這意味着代碼是從頂部編譯的。 當我們在 main 函數之后定義一個函數並在 main [myFunction () ] 中使用它時,編譯器會認為“這是什么。我以前從未見過這個”並產生一個錯誤,說 myFunction 未聲明。 如果你想以這種方式使用,你應該在定義 main 函數之前給出該函數的原型。 但是有些編譯器在沒有原型的情況下接受。

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

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

因為

myFunction()

必須在使用前聲明。 這通常是 C++ 行為。

函數在使用前需要聲明:

void myFunction();

int main() {
  myFunction();
}

void myFunction() {
  ...
}

你必須向前聲明一個函數,這樣 main 才能知道有一些。

void myFunction();

int main()
{
   myFunction();
}

void myFunction(){}

不要忘記把; 在每個命令之后。

在調用函數之前指定函數聲明。這樣編譯器就會知道返回類型和簽名

先聲明再定義。

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

您必須先聲明該函數。

void myFunction();

int main()
{
    myFunction()
 }

 myFunction(){}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM