Archived

This topic is now archived and is closed to further replies.

Shannon Barber

MSVC7 non-compliance list

Recommended Posts

Oluseyi    2103
quote:
Original post by Kylotan
Individual non-compliances should be toggleable (is that a word?)

AFAIK... no.

quote:
The extra typing this has caused me is probably more work than it would take MS to make this into an option.

IIRC, they already did. You can revert to normal operation if you disable Microsoft extensions (/Za), but then you have to deal with a bunch of other headers that won''t work...

A more elegant solution is to provide an additional "scope" around your for loops where possible:

{for(int i = 0; i < x; ++i)
{
// expected scope of i
}}
{for(int i = 25; i >= 0; --i)
{
// works, because i is constrained to outer scope
}}


[ GDNet Start Here | GDNet FAQ | MS RTFM | STL | Google ]
Thanks to Kylotan for the idea!

Share this post


Link to post
Share on other sites
spock    217
quote:
Original post by DrPizza, speaking of Intel C/C++
It also has an astonishing habit of breaking code.

Simply put, the compiler is broken. There are a number of occasions under which it simply *does not generate any code* for a function, and it does this in error. It also has issues whereby it incorrectly generates (esp. floating-point) code.



While I''m not developing anything even remotely mission-critical for Windows, I do care about correct code and if it''s that bad I may have to reconsider my choice of compiler. Can you back up your claim with specific examples or point me to some kind of bug reports or errata documenting such code-generation deficiencies?

Share this post


Link to post
Share on other sites
Kylotan    9986
By "should be toggleable", I meant: "I would very much like it to be this way, and see no good reason why it is not."

quote:
]Original post by Oluseyi
You can revert to normal operation if you disable Microsoft extensions (/Za), but then you have to deal with a bunch of other headers that won't work...

Exactly. You can't do a damn thing with extensions turned off unless you just want to write very simple C programs.

quote:
A more elegant solution is to provide an additional "scope" around your for loops where possible:
I dunno... I guess I just prefer extra variables to extra braces. Yes, yes, I know, this probably costs me anything up to 100 bytes of extra storage at certain points during my program's execution Oh well.

Edited by - Kylotan on January 14, 2002 5:44:41 PM

Share this post


Link to post
Share on other sites
DrPizza    160
quote:
Original post by spock
While I''m not developing anything even remotely mission-critical for Windows, I do care about correct code and if it''s that bad I may have to reconsider my choice of compiler. Can you back up your claim with specific examples or point me to some kind of bug reports or errata documenting such code-generation deficiencies?



I will download the newest version 5.0 demo and see what I can find; I didn''t (foolishly) keep the examples of code that broke around.

quote:

I''ve been wracking my brain to find a way to use the preprocessor to solve that:

You do it like this.

#define for if(0) {} else for 


Share this post


Link to post
Share on other sites
ATronic    122
CodeWarrior is the best. I will say that msvc++ can be easier to use in some situations, yes. But CodeWarrior is more optimized, I like the IDE better in general, and is in general more flexible than visual c++. But we all know MS is not about flexibility. Examples: DirectX, Anti-Trust Case...

Alex Broadwin
A-Tronic Software & Design
-----
"if you fail in life, you were destined to fail. If you suceed in life, call me."
"The answer is out there."
"Please help, I''m using Windows!"

Share this post


Link to post
Share on other sites
Oluseyi    2103
quote:
Original post by ATronic
CodeWarrior is the best.

Please don''t state opinion as fact.

quote:
But we all know MS is not about flexibility. Examples: DirectX, Anti-Trust Case...

I wonder how "flexible" CodeWarrior would be if Metrowerks had an operating system first...

My point is that Microsoft is a business entity; as such its primary concern is profit and its primary responsibility is to its shareholders. I agree that CodeWarrior is a more flexible option, but that is a business strategy not a philosophical decision.

[ GDNet Start Here | GDNet FAQ | MS RTFM | STL | Google ]
Thanks to Kylotan for the idea!

Share this post


Link to post
Share on other sites
ATronic    122
Probably very. Only microsoft seems to have such a monopoly complex, not all are like them. As for the "opinion as fact", if you could tell it was an opinion, that's all that matters. Oh, and CodeWarrior IS choosen over MSVC++ in the industry overall because of that flexibility I spoke of. And so you know, I was not only speaking of platforms, it is IN GENERAL a flexible ide/compiler. I never said it was only due to the fact that you can work with many many operating systems and consoles, but that does help. It's to MetroWerks' benefit that they support multiple platforms, it makes them more money. I tend to agree with your opinion's Oluseyi, but here I do not.

Alex Broadwin
A-Tronic Software & Design
-----
"if you fail in life, you were destined to fail. If you suceed in life, call me."
"The answer is out there."
"Please help, I'm using Windows!"

Edited by - ATronic on January 15, 2002 12:41:54 PM

Share this post


Link to post
Share on other sites
Prosper/LOADED    100
quote:
Original post by Oluseyi
Off the top of the head, GCC does not permit the following (str is a std::string object):
std::ctype().toupper(str.begin(), str.end());  

I''m still looking for a viable workaround without digging into the std::locale<> specification.



Anyone knows if it''s still true with gcc 3.0.x ?

Share this post


Link to post
Share on other sites
Arild Fines    968
quote:
Original post by ATronic
Only microsoft seems to have such a monopoly complex, not all are like them.

To have a monopoly complex, you need to have a monopoly first, which MS has and Metrowerks doesnt - can you honestly say you think Metrowerks would have acted any different if they had the same market share that MS enjoys?



Once there was a time when all people believed in God and the church ruled. This time is called the Dark Ages.

Share this post


Link to post
Share on other sites
Kylotan    9986
quote:
Original post by ATronic
As for the "opinion as fact", if you could tell it was an opinion, that''s all that matters.

Remember that not everyone on these forums is as experienced as Oluseyi, and therefore might not be so able to tell what is a personal opinion and what is common consensus.

Share this post


Link to post
Share on other sites
ATronic    122
I suppose both are true. Sorry if some can''t tell it''s an opinion, but it truely is ranked "ONE of the best" in the industry. MSVC++ is not, so much, due to that meantioned lack of flexibility. But Microsoft seems to have an issue I have never seen with any other company. I don''t want to get into an argument over why microsoft is completely evil (good products, but evil), but the next step in their business plan is probably "overthrow USA government". Sure metrowerks would like to be in their position, most companies probably would. Heck, it''s a sweet deal. Just the same, they take it to a new level.

Alex Broadwin
A-Tronic Software & Design
-----
"if you fail in life, you were destined to fail. If you suceed in life, call me."
"The answer is out there."
"Please help, I''m using Windows!"

Share this post


Link to post
Share on other sites
spock    217
quote:
Original post by DrPizza (speaking about the Intel C/C++ compiler)
I will download the newest version 5.0 demo and see what I can find; I didn''t (foolishly) keep the examples of code that broke around.



So, any news about this? I''m sure there are other people that would be very interested to hear about such problems with the Intel compiler - like the people on Open Magazine, considering their recent article...

BTW, it looks like Intel has acquired the KAI C++ compiler. I guess the reason for Intels increased interest in compiler technology lately is that optimization is supposed to play a much more important role for their 64-bit architecture.

(sorry for resurrecting this old thread, but I really want to know)

Share this post


Link to post
Share on other sites
sjdibble    122
quote:
-----------------------------------------------------------------

VC++ 7.0 does support template template parameters but it does not support partial specializations. The next version of Visual C++ will contain a highly conformant C++ compiler that will support partial specializations, partial ordering, and a host of modern C++ class libraries, like Boost.

We are very confident that this compiler will be released (much) sooner rather than later - i.e. you will definitely not have to wait 3 years for this release.

--
Jonathan Caves
Microsoft Corporation

-----------------------------------------------------------------

So in other words, please buy VC++ 7.0 soon because we are going to replacing it within a year and fleece you for another wad of cash. Maybe I''ll stick with version 6 for now !

Stephen

Share this post


Link to post
Share on other sites
TheMuuj    122
From what I''ve put together (some fact, some speculation), MSVC7 was actually rushed.

1) They needed to have it working before they send out X-Box SDKs to their X-Box developers. They wanted a compiler better optimized for the Pentium 3, so they decided that they needed to update VisualC++.

2) They also had to add managed extensions to it so that .NET programs could be written in C++. I''m not sure, but I think the low-level parts of the framework itself are written in Managed C++. If this is true, VC++7 had to be finished a long time ago, because .NET has been in development for a while.

3) They finished what is now version 7, and did not want to change it before the release of VS.NET because they would either have to rush or delay VS.NET (which I think was supposed to be out last fall as it is). The most important parts (to Microsoft) of VS7 are C#, VB.NET, ASP.NET, ADO.NET, and every other .NET thing.

So version 7 could have been better if it had remained separate from VS.NET, but then we''d have both a VC++7 compiler and a VC++.NET compiler, which would be confusing. They could have also released a separate X-Box compiler, but I think they wanted to keep all of it together.

A 7.1 release would be highly possible, especially if it catered to pure C++ programmers.

--TheMuuj

Share this post


Link to post
Share on other sites