0

I am running Ubuntu and compiling my C++ code using g++. For some reason I can't get it to compile my source code using VOID MAIN. It is always telling me that I must use INT instead. This isn't life threatening, but I was just wondering if g++ just doesn't support a main function with a return of void. Anyone run into this problem?

GM

5
Contributors
6
Replies
8
Views
9 Years
Discussion Span
Last Post by spankyg
Featured Replies
  • 1
    Salem 5,138   9 Years Ago

    Yeah, the problem is you've been learning from people who never bothered to look at the standards. void main has never been a valid return type for main. Unfortunately for you, you've now got the pain of trying to unlearn something. All compilers extend the language in some way, I … Read More

0

The C++ standard says main is supposed to return int, right? I think that's the case, anyway.

So why would g++ support a main function with a return type of void? That makes no sense.

0

When you do use main to return an integer, that number that is sent back to the OS, how is it used? I know it is on the lines of error handling, 0 for no-errors and not 0 for errors.

1

Yeah, the problem is you've been learning from people who never bothered to look at the standards. void main has never been a valid return type for main. Unfortunately for you, you've now got the pain of trying to unlearn something.

All compilers extend the language in some way, I guess you learnt with a compiler that blindly accepted void main without complaint. g++ is no different in that respect. g++ -W -Wall -ansi -pedantic prog.cpp does a pretty good job of reigning it back to being just an ANSI C++ compiler, where the code has a pretty good chance of being compiled with any other ANSI C++ compiler.


As for the return result, you do can something like this in say a bash script

./myprog
if [ $? == 0 ]; then
 echo success
fi

The shell variable $? contains the return value of the main in the program you most recently ran.

You can also get the return status in your C code if you want as well

pid = fork();
if ( pid == 0 ) {
  /* run your other program */
  execl("./prog", "./prog", (char*)NULL );
} else if ( pid != -1 ) {
  int status;
  wait( &status );
  /* when prog exits, the return result is in status (along with some other stuff) */
}

Use the various 'W' macros to find out whether it was a normal exit (and thus a valid return status), or whether the program was killed or crashed.

Finally, SOME implementations of system("./prog") also return the status, but this is far from certain.

Comments
Cookie for Salem.
0

So the return is mainly used for automation of individual programs in a batch or bash script. I've not focused much on C++ since I work in a Windows environment, but I can use that bit of info Salem.

0

It is also used by programs when executing other programs. The return value tells the calling program whether it successfully executed its job or not. The return value is useful in a lot of situations, even in Windows programs.

0

Void Main never has worked in the last who knows how many years! It violates C+ standards right from the start. There are a lot of text book examples using "void" forget about them!

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.