Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #11847

Re: A free version of C++ on Win (7)??

From "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com>
Newsgroups comp.lang.c++
Subject Re: A free version of C++ on Win (7)??
Date 2011-11-26 11:00 +0100
Organization A noiseless patient Spider
Message-ID <jaqdc2$rh9$1@dont-email.me> (permalink)
References <jajbao$6jj$4@dont-email.me> <jape72$kku$1@dont-email.me> <japj4e$c0j$1@news.xmission.com> <9jb29bF4d0U11@mid.individual.net> <japmbd$hqp$1@news.xmission.com>

Show all headers | View raw


On 26.11.2011 04:27, Richard wrote:
> [Please do not mail me a copy of your followup]
>
> Ian Collins<ian-news@hotmail.com>  spake the secret code
> <9jb29bF4d0U11@mid.individual.net>  thusly:
>
>> On 11/26/11 03:32 PM, Richard wrote:
>>> The whole point of TCHAR and the _txxx macros/functions is to make
>>> your code portable to either ANSI or UNICODE builds on Windows.
>>
>> So the new definition of portable code is "portable to either ANSI or
>> UNICODE builds on Windows"?
>
> Jesus dude, wtf.  If you just want to find things to harp on, there's
> alt.flame.


Richard, all you're doing is trying to drown my earlier reply to you  -- 
  in noise.

In my experience g++ does not in general support the latest Microsoft 
"technologies", whether buzzword or useful. For example, there was a 
time when g++ did not support GDI+, which is/was a very useful new 
"technology" (essentially added graphics capabilities that had been 
lacking for about ten years or so). I think but I'm not sure that GDI+ 
support has been added to g++ now. Anyway, creating a g++ binding was 
quite laborious because Microsoft, unnecessarily, used Visual C++ 
compiler-specific features and really Bad Practices ,such as using min 
and max macros instead of the functions from <algorithm>, in their GDI+ 
headers. There are two possibilities: unbelievable incompetence, or 
intentional attempt to trap users in Microsoft land.

It's true that Visual C++ *enables* you to write standard code.

But sometimes you have to work really hard at it. Like, when it 
presumably with the best of intentions try to help you by rewriting your 
standard-compliant XHTML code to Microsoft-specific rubble. I remember 
how ironic this was when MS released Internet Explorer 7, I think it 
was, anyway the version after the long hiatus, the version with better 
support for standards. The MS web page about this new version was 
perfectly standard-conforming, which caused a lot of really impressed 
and positive commentary -- for about 8 hours, when they updated it, and 
the MS tools screwed it totally up forever...

When I wrote that novices should be aware of the (intentional or not) 
Visual Studio attempts to trap the user in the Microsoft world, I did 
not expect any discussion about that, because it is so well known and so 
obvious to anyone experienced. So I did not give any examples. But OK, 
now's the time.

Let's create a console project in Visual C++ Express 10.0.

We (you) are the teacher or lab assistant, providing instructions to a 
novice. You want to /avoid/ that the novice ends up with Visual Studio's 
automatically generated console program "starter code". Because that 
starter code is not only Microsoft specific but teaches extreme wrongness.

<code>
// first_program_ever.cpp : Defines the entry point for the console 
application.
//

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
     return 0;
}

</code>

Here the comment at the top is wrong, it's not the "entry point" but 
rather the "startup function" (one of the most infamous Microsoft 
documentation bugs, still there as far as I know, describes the WinMain 
startup function signature as the signature of a program's entry point).

The "stdafx.h" header is not a standard header. It is a header used for 
Visual C++ precompiled header technology. Which changes the semantics 
such that *standard code* fails to compile, with baffling (to the 
novice) "end of file" error messages. There is no advantage to 
precompiled headers for a little console program, but lots of 
disadvantages, including the non-standard semantics. I.e., when we 
discount colossal incompetence as an explanation, it's an attempt to 
trap the user in Microsoft-land.

"_tmain" is not a standard startup function name. The standard name is 
"main". "_tmain" is in support of Windows 9x. Conceivably whoever 
maintained this just forgot about stopping to use that thing after 2001, 
when the Layer for Unicode was introduced to deal with the lack of 
Unicode support in Windows 9x. But would anyone really believe that they 
forgot about that for 10 years? I don't.

Similarly, "_TCHAR" in the argument list is non-standard, and is solely 
in support of Windows 9x.

Finally, the "return 0;" is unnecessary, but it is the only thing here 
that is not an attempt to unnecessarily trap the user in Microsoft land.

To avoid that entrapment, you have to provide step by step instructions 
like those below, ordering the novice to do things in an apparently (to 
the novice) needlessly and senselessly complicated way -- which as I see 
it, of course is by design, an attempt to trap in Microsoft world.

   Step 1.
   Run Visual C++ Express by clicking its icon.

In Windows 7 one way I can do this is by typing "visual" in the Start 
menu, and selecting the (on my machine) second choice.

   Step 2.
   Click "New Project", select Windows Console Project, fill in
   details

This can look like <url: http://i.imgur.com/4V1bE.png>.

   Step 3.
   Click OK in "New Project" and ***DO NOT*** click "Next" in the
   "Application Wizard" that pops up. Instead click "Application
   Settings". This can look like <url: http://i.imgur.com/9ifsE.png>.

   Step 4.
   In the "Application Settings" page, **FIRST** remove the tick
   mark in the "Precompiled Header" box. **THEN** place a tick mark
   in the "Empty Project" box. Doing this the opposite order won't
   work.

Now you might wonder, at version 10.0 of Visual Studio, as of 2011, is 
it likely that there is still such an idiotic bug in one of the most 
often used dialogs? Well yes, it is IMHO likely, that it is there *by 
design*. That Microsoft rather heavy-handed steers the user towards 
using "Precompiled header" at least, which changes the semantics of 
ordinary C++ code so that it is no longer standard conforming (wrt. 
header inclusion), but instead Microsoft specific, and for standard code 
yields baffling error messages about encountering end-of-file.

   Step 5.
   Click Finish, right click the Source folder in the project, and add
   an a new file (you can call it "main.cpp", or anything).

That's a pretty awkward procedure just to avoid the entrapments!

And so it goes, e.g. for COM programming where instead of associating 
classes with UUIDs via standard C++ traits or even just a macro namer 
thing, a non-standard language extension is used. This language 
extension serves no purpose in C, where it would just as well be done 
via macros, and in C++ it has no advantages compared to a traits class. 
It is solely a device to trap the user in Microsoft land.

And so on.

All of this *can* in principle be avoided, and that's what I wrote.

But it is very much necessary to be aware of it.


Cheers & hth.,

- Alf

Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

A free version of C++ on Win (7)?? "W. eWatson" <wolftracks@invalid.com> - 2011-11-23 09:42 -0800
  Re: A free version of C++ on Win (7)?? Victor Bazarov <v.bazarov@comcast.invalid> - 2011-11-23 12:46 -0500
    Re: A free version of C++ on Win (7)?? "W. eWatson" <wolftracks@invalid.com> - 2011-11-23 10:37 -0800
      Re: A free version of C++ on Win (7)?? Ian Collins <ian-news@hotmail.com> - 2011-11-24 08:05 +1300
        Re: A free version of C++ on Win (7)?? "W. eWatson" <wolftracks@invalid.com> - 2011-11-24 07:10 -0800
  Re: A free version of C++ on Win (7)?? "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2011-11-23 20:24 +0100
    Re: A free version of C++ on Win (7)?? Ebenezer <woodbrian77@gmail.com> - 2011-11-23 12:18 -0800
      Re: A free version of C++ on Win (7)?? Krice <paulkp@mbnet.fi> - 2011-11-25 01:34 -0800
        [OT] Re: A free version of C++ on Win (7)?? Paavo Helde <myfirstname@osa.pri.ee> - 2011-11-25 17:01 -0600
    Re: A free version of C++ on Win (7)?? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-11-24 01:59 -0800
      Re: A free version of C++ on Win (7)?? ralph <nt_consulting64@yahoo.net> - 2011-11-24 10:59 -0600
        Re: A free version of C++ on Win (7)?? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-11-25 00:40 -0800
          Re: A free version of C++ on Win (7)?? jacob navia <jacob@spamsink.net> - 2011-11-25 11:40 +0100
            Re: A free version of C++ on Win (7)?? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-11-27 02:47 -0800
            Re: A free version of C++ on Win (7)?? Thomas Boell <tboell@domain.invalid> - 2011-11-27 16:56 +0100
            Re: A free version of C++ on Win (7)?? Adrien Haxaire <nntp@adrienhaxaire.org> - 2011-12-06 10:48 +0100
          Re: A free version of C++ on Win (7)?? legalize+jeeves@mail.xmission.com (Richard) - 2011-11-26 00:30 +0000
            Re: A free version of C++ on Win (7)?? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-11-27 02:49 -0800
          Re: A free version of C++ on Win (7)?? Dombo <dombo@disposable.invalid> - 2011-11-27 22:39 +0100
        Re: A free version of C++ on Win (7)?? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2011-11-25 12:29 +0000
          Re: A free version of C++ on Win (7)?? ralph <nt_consulting64@yahoo.net> - 2011-11-25 22:38 -0600
  Re: A free version of C++ on Win (7)?? Vincenzo Mercuri <vincenzo.mercuri@yahoo.it> - 2011-11-23 21:27 +0100
  Re: A free version of C++ on Win (7)?? Lynn McGuire <lmc@winsim.com> - 2011-11-23 14:38 -0600
  Re: A free version of C++ on Win (7)?? puppi <fabricio.puppi@gmail.com> - 2011-11-23 17:40 -0800
    Re: A free version of C++ on Win (7)?? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-11-24 02:00 -0800
  Re: A free version of C++ on Win (7)?? XeCycle <xecycle@gmail.com> - 2011-11-24 12:05 +0800
  Re: A free version of C++ on Win (7)?? Vincenzo Mercuri <vincenzo.mercuri@yahoo.it> - 2011-11-24 20:38 +0100
  Re: A free version of C++ on Win (7)?? legalize+jeeves@mail.xmission.com (Richard) - 2011-11-25 03:14 +0000
    Re: A free version of C++ on Win (7)?? "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2011-11-25 12:31 +0100
      Re: A free version of C++ on Win (7)?? Leigh Johnston <leigh@i42.co.uk> - 2011-11-25 14:37 +0000
      Re: A free version of C++ on Win (7)?? legalize+jeeves@mail.xmission.com (Richard) - 2011-11-26 00:38 +0000
        Re: A free version of C++ on Win (7)?? "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2011-11-26 01:46 +0100
          Re: A free version of C++ on Win (7)?? legalize+jeeves@mail.xmission.com (Richard) - 2011-11-26 00:57 +0000
          Re: A free version of C++ on Win (7)?? legalize+jeeves@mail.xmission.com (Richard) - 2011-11-26 01:00 +0000
            Re: A free version of C++ on Win (7)?? "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2011-11-26 02:08 +0100
              Re: A free version of C++ on Win (7)?? legalize+jeeves@mail.xmission.com (Richard) - 2011-11-26 02:32 +0000
                Re: A free version of C++ on Win (7)?? Ian Collins <ian-news@hotmail.com> - 2011-11-26 15:47 +1300
                Re: A free version of C++ on Win (7)?? legalize+jeeves@mail.xmission.com (Richard) - 2011-11-26 03:27 +0000
                Re: A free version of C++ on Win (7)?? "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2011-11-26 11:00 +0100
                [OT] A free version of C++ on Win (7)?? Leigh Johnston <leigh@i42.co.uk> - 2011-11-26 12:56 +0000
                Re: [OT] A free version of C++ on Win (7)?? "Asger Joergensen" <Junk@Asger-P.dk> - 2011-11-26 13:46 +0000
                Re: A free version of C++ on Win (7)?? Squeamizh <squeamz@hotmail.com> - 2011-11-26 08:50 -0800
                Re: A free version of C++ on Win (7)?? gwowen <gwowen@gmail.com> - 2011-11-28 01:47 -0800
                Re: A free version of C++ on Win (7)?? Tobias Müller <troplin@bluewin.ch> - 2011-11-26 12:46 +0000
            Re: A free version of C++ on Win (7)?? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-11-27 02:58 -0800
              Re: A free version of C++ on Win (7)?? legalize+jeeves@mail.xmission.com (Richard) - 2011-11-28 02:42 +0000
                Re: A free version of C++ on Win (7)?? Paavo Helde <myfirstname@osa.pri.ee> - 2011-11-28 01:20 -0600
      Re: A free version of C++ on Win (7)?? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-11-27 02:55 -0800
        Re: A free version of C++ on Win (7)?? Gert-Jan de Vos <gert-jan.de.vos@onsneteindhoven.nl> - 2011-11-27 07:05 -0800
  Re: A free version of C++ on Win (7)?? Man-wai Chang <toylet.toylet@gmail.com> - 2011-11-25 21:24 +0800

csiph-web