Using Visual Studio 2010 with Service Pack 1, try doing the following:
- create a new project of type
Win32 Console Application, and underApplication Settingsin the project wizard, selectConsole ApplicationandEmpty Project. - create a single
.cppfile - add the code
int main() {}to it - hit
build.
You’ll now get the warning (listed under “Errors”, for some reason): IntelliSense: PCH warning: header stop cannot be in a macro or #if block. An intellisense PCH file was not generated.
(I zipped up a solution reproducing the problem here. Note that everything is left at the default settings.
What the f…? How can something so simple break IntelliSense?
I am sometimes amazed at the apparent lack of testing that goes into a release of Visual C++.
VC2010 beta 1 had a glaringly obvious bug, where the above program would fail with a linker error. Apparently, no one had thought to test a program which used the standard-compliant main instead of wmain with UNICODE enabled. Sure, it was beta, and you’d expect errors, but something simpler than a Hello World should still work, shouldn’t it?
Now we get spurious IntelliSense errors if we have the audacity to create the tiniest, simplest program imaginable, at the default settings.
Of course, it gets better. Because as we all know, Microsoft Connect is beyond useless, and obviously, some optimistic/foolish VC++ users had already reported the problem with this warning message. Google gave me the following three bug reports:
- this one, closed as By Design
- this, closed as Duplicate
- And of course, no discussion of Connect would be complete without something closed as Won’t Fix
It is one thing that errors that practically leap in the user’s face are allowed to exist in a shipping product at all, that literally the shortest, simplest program possible provokes the bug, but that Microsoft closes such bugs with three different close reasons only serves to underline how utterly useless, random and user–hostile Microsoft Connect is, and it is pretty hard to escape the conclusion that there is something fundamentally wrong with how Microsoft’s DevDiv operates.
I am generally reasonably positive towards Microsoft’s C++ compiler. It’s nothing special, certainly, and Microsoft’s policy of never ever improving an existing product means it is perpetually obsolete compared to the competition, but it generally works, and it has made great strides towards standards compliance. But the quality of the IDE, and of Intellisense, is really absurd, at times. VC2010 seems to have shifted the absurdity of IntelliSense from “it just plain doesn’t work”, to “It works reasonably ok, but imposes some baffling requirements on the code, has some kind of love affair with precompiled headers and seemingly doesn’t even bother with code that doesn’t have one, reports false positive ‘errors’, and lists them in the ‘Errors’ window, along with actual compile errors.”
And Connect is nothing short of an insult towards Microsoft’s customers. It is apparently staffed by monkeys, perhaps assisted by a script that randomly closes issues as “Won’t Fix”, and seems to serve the sole purpose of underlining to Microsoft’s customers, all the errors that will not get fixed.
Here’s another great example I saw in my Twitter feed just two days ago:
#SystemIsBroke indeed. Why even have Connect, when bugs apparently only get resolved once someone with lots of followers on Twitter complain about it?
And of course, this gem of a response from Microsoft on the bug report itself is really remarkable:
I do understand your concern, but we are beyond our ZBB date, therefore only ship-blocker bugs make the bar at this point. Considering that we have shipped this bug before, it is hard to make a case that we need to fix it in this release since it did not block our previous release. Thank you.
Wait what? I guess this pretty much confirms what we all knew: that once a bug has been closed as “Won’t Fix”, the claims that “we will evaluate this for a future release” are just pretense. What actually happens is that the older a bug gets, the lower priority it’s given, according to some twisted “precedence” principle. “We’ve been able to ignore the bug for X years now, so surely, there’d be no harm in ignoring it one more year”.
Now sure, I’m not particularly concerned about WPF, but it shows that the problems with Connect are not limited to Visual C++ issues.
Dear Microsoft, Connect is broken. And everyone except you knows it.
Tags: c++, connect, rants, visual-studio







Hi Jesper (and Kelly),
I have no reason to doubt your experiences above — Connect is a huge interface over multiple backends, and things have gotten lost and/or missed over the years.
I can assure you that we’re working on it. This is not just some general comment. I’m spending hours daily working on cleaning up old areas, putting in new reporting, monitoring bugs, syncing betwen DBs, etc.
Yes, it should never have gotten this scattered. It has more to do with a re-org or two that is typical of large companies, and a system that was built with good intentions, but whose infrastructure was completed prior to the whole social Web’s emergence. There are several reasons why we’ve had bugs go through the cracks, but the bottom line is, we’re fixing the issues, and putting things in place so we don’t get back to where we were 12 months ago.
The C++ team fixes about 40% of the bugs that come in. And the ones they don’t fix are usually pushed back to the next cycle, or we make the call that it is not the right business decision to fix the bug at this time. There is a lot behind that; if you’ll think about the code you write, you know there are imperfections that you want to address, but can’t always get to them on a particular cycle.
I would be happy to show you both how we’ve made significant progress over the last 12 months, and how we’re going to make it better going forward, but it’s not really appropriate for a single response on a blog. More likely, I’ll post something on my blog, and on the Connect site itself.
One thing that is really helping is our new UserVoice site (http://visualstudio.uservoice.com) where customers make suggestions, and are given 10 votes to apply to other suggestions. This helps us see the most important issues to our customers, so we can prioritize. In the case of bugs, Connect is still the right way to go.
If you think a bug is closed unfairly, re-activate it and ask for an explanation. We spend a lot of time evaluating the bugs, and fix as many as we can. But there comes a time when we have to put a bow on what we have, and ship it.
I hope this helps.
Doug Turnure Visual Studio PM — Feedback and Early Adoption
This has been my experience as well (duh). However, look at the bright side: try filing a bug with Apple’s bugreport.apple.com form. By comparison, Microsoft Connect will appear modern, user-friendly and all around professional. Apple’s bug reporting actively discourages you from submitting bugs. And if that’s not enough, they will just delete your bug reports without any feedback or accountability whatsoever.
@Konrad. Well we all know Apple’s slogan: It just works! (and if it doesn’t we don’t want to hear about it).
I agree that Connect has been somewhat of a joke for many years but I must say that since Doug took over as the PM for Feedback at MS, things have started to move (slowly, but still moving) in the right direction. There’s still a long way to go but I hope they will get there…
[…] it turns out, four years is normal for Microsoft Connect to procrastinate on trivial issues, whether in VC++ or .NET. This matches my […]