詳細的講解了C、C++中的main函數,以及returne的用法。
return是C++預定義的語句,當return語句提供了一個值時,這個值就成為函數的返回值.
很多人甚至市面上的一些書籍,都使用了void main( ) ,其實這是錯誤的。C/C++ 中從來沒有定義過void main( ) 。
C++ 之父 Bjarne Stroustrup 在他的主頁上的 FAQ 中明確地寫著
The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C. ( void main( ) 從來就不存在於 C++ 或者 C )。下面我分別說一下 C 和 C++ 標准中對 main 函數的定義。
1. C
在 C89 中,main( ) 是可以接受的。Brian W. Kernighan 和 Dennis M. Ritchie 的經典巨著 The C programming Language 2e(《C 程序設計語言第二版》)用的就是 main( )。此處已經驗證!在他們敘說符號常量的一節中,這樣舉例的:
#include<stdio.h>
#define LOWER 0
#define UPPER 300 //如果直接使用300 會讓人有點無法理解,賦予它們有意義的名字。開始時候用前者,編譯的時候用後者替換
#define STEP 20 //此時UPEER等為符號常量,符號常量替換數字
main(){
int fahr;
for(fahr=LOWER;fahr<=UPPER;fahr+=STEP)
printf("%3d %6.1f\n",fahr,(5.0/9.0)*(fahr-32));
}
不過在最新的 C99 標准 中,只有以下兩種定義方式是正確的:
int main( void )
int main( int argc, char *argv[] )
當然,我們也可以做一點小小的改動。例如:char *argv[] 可以寫成 char **argv;argv 和 argc 可以改成別的變量名(如 intval 和 charval),不過一定要符合變量的命名規則。
如果不需要從命令行中獲取參數,請用int main(void) ;否則請用int main( int argc, char *argv[] ) 。
main 函數的返回值類型必須是 int ,這樣返回值才能傳遞給程序的激活者(如操作系統)。
如果 main 函數的最後沒有寫 return 語句的話,C99 規定編譯器要自動在生成的目標文件中(如 exe 文件)加入return 0; ,表示程序正常退出。不 過,我還是建議你最好在main函數的最後加上return 語句,雖然沒有這個必要,但這是一個好的習慣。注意,vc6不會在目標文件中加入 return 0; ,大概是因為 vc6 是 98 年的產品,所以才不支持這個特性。現在明白我為什麼建議你最好加上 return 語句了吧!不 過,gcc3.2(Linux 下的 C 編譯器)會在生成的目標文件中加入 return 0; 。