I was just testing this code by compiling it with GCC (g++
);
#include
main(int argc, char **argv){
printf(\"something\");
}
<
The program is ill-formed. Omitting the return type is not permitted by the C++ standard.
The reason the compiler doesn't treat it as a fatal error is historical. Prior to the 1999 standard, C did permit the return type of a function to be omitted; it would default to int
. C++ is derived from C, so early (pre-standard) versions of C++ had the same rule.
In modern C++, omitting the return type is an error. The compiler is required to diagnose such an error, but it's not required to treat it as fatal. By printing a warning, the compiler has done its job as far as the standard is concerned.
Don't ignore warnings.