Re: Standard Versus Non-Standard C++
On Monday, July 2, 2012 8:21:40 AM UTC-5, Robert Wessel wrote:
On Sun, 1 Jul 2012 15:04:21 -0700 (PDT), DeMarcus
<use_my_alias_here@hotmail.com> wrote:
I guess the problem isn't that Microsoft supports C++ with
extensions, the problem is that you can't compile portable code for
the Microsoft platform because they have flavored their C++ with
various mandatory unstandardized extensions like ___stdcall.
MS's C++ implementation is pretty good, standards wise. Sure they
have non-standard extensions, but so does everyone else. They also
have a couple of languages, C++/CX, C++/CLI, which are less
straight-forward extensions of C++. But if you were porting a C++
program, you'd probably want to stick to the standard C++ dialect (not
that the port to the other dialects would usually be all that
difficult, but almost certainly more work than the straight C++ port).
And the need for __stdcall in Windows is not really different than the
need for __attribute__((stdcall)) in GCC - mainly you need to use it
when building interfaces to shared/system libraries (DLLs) (which is
not covered by the standard anyway).
Agreed.
To be clear, I have no problem at all with Microsoft extensions like:
_declspec()
__stdcall
__pascal
__uuidof()
etc.
All of these are things that are additive to standard C++,
and I use them at my own risk. When I look at them, I think
"These are not C++ keywords.", and they do not interfere with my
C++ concept space.
But if I see the word "class", as a keyword, then I have
certain expectations about the semantics of that keyword, according
to the C++ standard, and if those expectations are violated by,
for example, not making the member functions private by default,
then to me, that is changing the semantics of a fundamental C++
keyword.
-Le Chaud Lapin-
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]