| Many people even use some books on the market.Void main ()In fact, this is wrong. C/C ++Has never been definedVoid main ().C ++Father
 Bjarne stroustrupOn his homepage
 FAQThe definition void main () {/*... */} is not and never has been c ++, nor has it even been c .(
 Void main () never exists in C ++
 Or C ). Let me talk about C separately.
 In the C ++ standard
 Function Definition.
   1. c   InC89Medium,Main ()Is acceptable.Brian W. kernighanAnd
 Dennis M. RitchieThe C programming language 2e (C
 The second edition of the programming language) uses main (). However, in the latest
 C99In the standard, only the following two definitions are correct:
   Int main (void) Int main (INT argc, char * argv [])   (References: ISO/IEC 9899: 1999 (E) programming ages-C 5.1.2.2.1 program startup)
   Of course, we can also make a small change. Example: char * argv []It can be written as char ** argv; argv
 And argc can be changed to another variable name (such as intval
 And charval), but must comply with the variable naming rules.
   If you do not need to obtain parameters from the command line, use int main (void)Otherwise, use int main (INT argc, char * argv []).
 .
   The Return Value Type of the main function must be Int.In this way, the return value can be passed to the activator (such as the operating system) of the program ).
   If the mainNo return is written at the end of the function.
 Statement, c99
 Requires the compiler to automatically be In the generated target file (such as exe
 File) add return 0;
 , Indicating that the program Exits normally. However, I suggest you add return at the end of the main function.
 Statement, although not necessary, but this is a good habit. Note,Vc6Return 0 will not be added to the target file;
 Probably because vc6
 It is a 98-year product, so this feature is not supported. Now I understand why I suggest you add return
 Statement! However,Gcc3.2(Linux
 The C compiler under) will add return 0 to the generated target file;
 .
     2. c ++   C ++ 98 The following two main functions are defined:
   Int main () Int main (INT argc, char * argv [])   (References: ISO/IEC 14882 () programming ages-C ++ 3.6 start and termination)
   Int main ()Equivalent to int main (void) in c99)
 ; Int main (INT argc, char * argv [])
 And c99
 . Similarly, main
 The Return Value Type of the function must also be Int. If the return statement is not written at the end of the main function, C ++ 98
 Requires the compiler to automatically add return 0 to the generated target file;
 . Similarly, vc6
 This feature is not supported, but G ++ 3.2 (Linux
 C ++ compiler.
     3. About void main   In CIn C ++, the function prototype that does not receive any parameters or return any information is "Void Foo (void );". This may be the reason why many people mistakenly believe that the main function can be defined as void if the return value of the program is not required.
 Main (void ). However, this is wrong! Main
 The Return Value of the function should be defined as Int.
 Type, C and C ++
 This is the standard. Although in some compilers, void main
 It can be compiled (such as vc6), but not all compilers support void main
 BecauseThe standard has never defined void main..G ++ 3.2
 If the return value of the main function is not int
 Type.. Gcc3.2
 A warning is issued. So, if you want your program to have a goodPortabilityPlease use int main
 .
     4. Functions of return values   The Return Value of the main function is used to indicate the exit status of the program. If 0 is returned, the program Exits normally. Otherwise, the program exits abnormally. Below weWINXPPerform a small experiment in the environment. First, compile the following program:
   Int main (void) { Return 0; }   Open the "command prompt" in the attachment, run the compiled executable file in the command line, and enter "Echo% Errorlevel %", Press enter to see that the return value of the program is 0.
 . Assume that the compiled file is a.exe.
 If you enter"A & dirTo list the folders and files in the current directory. But if it is changed to "Return-1", or other non-
 0 value. After re-compilation, enter "A & dir". Then, the Dir
 Not executed. Because &&
 The meaning is: If & the previous program Exits normally, continue to execute &&
 Otherwise, the program is not executed. That is to say, using the return value of the program, we can control whether to execute the next program. This is int main
 Benefits. If you are interested
 The Return Value Type of the function is changed to non-int.
 Type (such as float), re-compile and execute "A & dir" to see what happens and think about why that happens. By the way, if you enter
 A | dirIf
 Run the Dir command to exit unexpectedly.
 .
     5. What about int main (INT argc, char * argv [], char * envp?   This is certainly not a standard C/C ++Something defined in it! Char * envp []
 Is an extension provided by some compilers to obtain system environment variables. Because it is not a standard, not all compilers support it. Therefore, it has poor portability and is not recommended.
 ========================================================== ====================================== If you think that I am not authoritative enough, let C ++FatherBjarne stroustrupLet me convince you!
 FromC ++ style and technique FAQsHttp://www.research.att.com /~ BS/bs_faq2.html # void-mainq: Can I write "Void main?(Chinese Version)
 Bjarne stroustrupTranslated by Ziyun
 A:Such definition             void main() { /* ... */ }  It is neither C ++ nor C. (See iso c ++Standard 3.6.1 [2]
 Or Iso c Standard 5.1.2.2.1) A standard-compliant compiler implementation should accept
             int main() { /* ... */ }And             int main(int argc, char* argv[]) { /* ... */ }  The compiler can also provide more overloaded versions of main (), but all of them must return an int. This int is returned to the caller of your program. This is a "responsible" approach, "Nothing returns" is not great. If the caller of your program does not support "Return Value" for communication, this value will be automatically ignored -- but this does not allow voidMain () becomes a legal C ++ or C code. Even if your compiler supports this definition, it is best not to develop this habit-otherwise, you may be considered a little ignorant by other C/C ++.
   In C ++, if you are too troublesome, you do not need to explicitly write a return statement. The compiler automatically returns 0. For example:             #include<iostream>               int main()             {                        std::cout << "This program returns the integer value 0\n";             }   Trouble? No problem. Int main () is one letter less than void main (): O). In addition, please note that no matter whether it is ISOBoth C ++ and c99 do not allow you to omit the return type definition. That is to say, with c89 and arm C ++
 The C ++] described in the annotated C ++ reference manual, which was co-authored by Ellis and Bjarne stroustrup in 1990, is different. Int Is not the default return value. So,
             #include<iostream>               main() { /* ... */ }An error occurs because the main () function lacks the return type.   ========================================================== ====================================== |