Wednesday 4 May 2016

Can I write "void main()" in C and C++?

"void main()" vs "int main()"

Many of us get confused between "int main()" and "void main". int and void both are return types but what's the correct return type for main function in C and c++?? The Question is answered by Bjarne Stroustrup himself. After reading this you will never write "void" in front of "main()":-


According to Bjarne Stroustrup (creator of C++), the definition
 void main() { /* ... */ }
is not and never has been C++, nor has it even been C. See the ISO C++ standard 3.6.1[2] or the ISO C standard 5.1.2.2.1. A conforming implementation accepts
 int main() { /* ... */ }
and
 int main(int argc, char* argv[]) { /* ... */ }
A conforming implementation may provide more versions of main(), but they must all have return type int. The int returned by main() is a way for a program to return a value to "the system" that invokes it. On systems that doesn't provide such a facility the return value is ignored, but that doesn't make "void main()" legal C++ or legal C. Even if your compiler accepts "void main()" avoid it, or risk being considered ignorant by C and C++ programmers.
In C++, main() need not contain an explicit return statement. In that case, the value returned is 0, meaning successful execution. For example:

 #include<iostream>

 int main()
 {
  std::cout << "This program returns the integer value 0\n";
 }


Note also that neither ISO C++ nor C99 allows you to leave the type out of a declaration. That is, in contrast to C89 and ARM C++ ,"int" is not assumed where a type is missing in a declaration. Consequently:


 #include<iostream>

 main() { /* ... */ }
is an error because the return type of main() is missing.

No comments:

Post a Comment