Re: entry point of application
On Nov 25, 4:33 pm, "Alf P. Steinbach" <al...@start.no> wrote:
[...]
The C++ standard requires a "main" startup function with "int"
result type.
The two signatures you show above must be supported.
With Microsoft tools you may indeed have to use the linker
option you referred to above, in order to correctly have the
standard "main" startup function called by the entry point
code.
Are you sure of this. I've only used VC++ for small, test
programs, but I've all of them have a fully standard main(), and
I'm not aware of having used any special compiler options to
make them link. (I have needed special options to get them to
compile C++. Including the standard library headers. But as
far as I know, things like /GR /Ehs /vmg or whatever don't
affect the linker.)
Specifying the entry point in order to have "main" called is
not, however, necessary with e.g. the GNU toolchain.
But you still need -std=c++98 if you want a C++ compiler:-).
(Admittedly, the differences are several orders of magnitude
less than if you forget /GR /Ehs /vmg when compiling with VC++.)
It is unfortunate that a major compiler vendor still as of
late 2007 hasn't managed to correctly implement a feature from
1972 (going back to original C) so that you have to use linker
options, but then, that compiler defaults to non-standard
behavior also in many other respects: you have to use a load
of options to get standard-conforming mode (exceptions, RTTI,
for-loop scope, wchar_t).
Regretfully, that's the case for almost all compilers. No
options generally results in something that's barely usable.
And of course, you don't always want 100% standard-conformance.
(My professional code makes extensive use of sockets, threads
and a couple of other non-standard features.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34