[英]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.