I've been making C++ games (both 2D and 3D) for years with GCC and several IDEs. But I get the impression that most professional game development teams use MSVC. Furthermore, all the next-gen stuff (Horde3D, for example) comes in Visual Studio formats.
The benchmarks I've found say they're equally fast and produce equally optimized code. So what's the advantage of using MSVC for games? Does it have to do with DirectX optimization?
VC++'s debugger let's you see all of the variables whenever, and you can browse through to whatever file/line you want to without stopping the debugger.
VC++'s debugger (from here on, VCDB) also has edit and continue (though I'm told gdb has this, as well), and the instruction pointer can be moved more or less arbitrarily.
The watches in VCDB are actually readable. The last time I tried to see the contents of an std::map, I found myself staring at the red-black tree. VCDB shows maps as
map[key1]=value1
map[key2]=value2
and so on...
std::strings and std::wstrings appear as regular strings (e.g. "string" and L"string"), and can optionally be viewed as objects.
Funny. I had a similar discussion last night on gee.
But I've found that VC++ debugger has some problems in showing the results of overloaded operators.
For std::string, in the GNU one I use c_str() to watch it
You mean the return values of functions run in debug? VCDB can do that, too. What I'm sure it can't do is directly run functions, such as std::vector::operator[]().