Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

877472 Posts in 32868 Topics- by 24305 Members - Latest Member: orloff

May 19, 2013, 03:03:01 PM
TIGSource ForumsDeveloperTechnical (Moderators: Glaiel-Gamer, ThemsAllTook)Which IDE? C++
Pages: 1 2 3 [4]
Print
Author Topic: Which IDE? C++  (Read 6298 times)
Crimsontide
Level 3
***


View Profile
« Reply #45 on: January 19, 2010, 06:57:19 PM »

No, Microsoft's stuff will not do what you want.
Visual Studio and its compiler doesn't work with standard C++, and you will get crap, and also get laughed at.

This is total rubbish, Visual C++ works well for the task and is widely used in the game development industry. How well a compiler conforms to the exact language standard is less of an issue (unless it fails completely). When writing modern games in C++ you often only use a small subset of the C++ standard for performance reasons (C with classes).

Speaking as someone who has had to port VC++ code to other platforms, VC++'s handling of templates is absolutely abysmal.  It doesn't do name lookup properly in many template contexts (and a few namespace ones, too) and as a result actually generates incorrect code in cases that rely on two-phase name lookup (this one in particular has bitten me in the past).

A beginning programmer probably won't run into these issues since they probably wouldn't be writing templates, but for advanced C++ usage I think you really should write first on a more standards conforming compiler (GCC if nothing else, Intel or Comeau if you have the money) and then port to MSVC++ if you absolutely need to use it.

Which compiler version?  I know the one that shipped with VS 2005 (compiler version 8 I believe) was pretty bad, but I thought the one that shipped with 2008 (version 9) was pretty solid on adhering to the standards...
Logged
Impossible
Level 3
***



View Profile Email
« Reply #46 on: January 19, 2010, 07:41:39 PM »

MSVC is currently one of the most standards compliant compilers available and has been since Visual Studio .NET 2003. The biggest outstanding issue is two phase name lookup, which unfortunately will still be be supported in 2010.  Its unfortunate that this has been a problem for you, object_0, but its obviously not a major issue for most developers, even those writing complex template code.

There are a handful of other things not supported or purposefully not compliant, as well as a lot of MS specific extensions clearly marked as MS specific in documentation.  This seems comparable to GCC, which has non-standard compliant functionality and its own set of compiler specific extensions.

Visual Studio 6 was notoriously bad though. There was basic template functionality but it was only there to support the STL implementation at the time.  I can see where you are coming from if most of your experience with Visual Studio is circa 2000.

I think the lesson learned in this thread is... If you have an admitted anti-MS bias, use Code::Blocks with MinGW because M$ sucks, otherwise use Visual Studio 2008 Express Smiley.  Of course, if you dislike Microsoft why use Windows at all?
Logged
Average Software
Level 10
*****

Fleeing all W'rkncacnter


View Profile WWW Email
« Reply #47 on: January 19, 2010, 08:18:53 PM »

MSVC is currently one of the most standards compliant compilers available and has been since Visual Studio .NET 2003.

The last version I used was later than 2003, I don't remember which, but whatever version it was still didn't parse template code prior to instantiation.  For example, it would happily accept the following:

Code:
template <typename Type>
void Funk()
{
    lsdsdafhjfsdahfauhae
}

You wouldn't get an error message until instantiation.  G++, Intel, and Comeau all parse templates to look for errors prior to instantiation (as required by the standard) and catch errors while the template is still in generic form.

Does VC++ finally require the use of typename in templates when referring to dependent nested types?  This is another one that burns programmers coming from VC++ to other compilers.  Last I knew, VC++ would accept this illegal code:

Code:
template <typename Type>
void Funk(std::vector<Type> v)
{
    std::vector<Type>::iterator i; // Illegal.  Requires typename before std::vector<Type>::iterator.
}

I follow the GCC mailing lists, and not a month goes by without someone reporting this as a GCC bug when it won't accept this code, ported from some VC++ project.

To call VC++ one of the most standards compliant compilers is really stretching it.  Intel and Comeau are both based on the EDG backend, which is basically 100% compliant, even supporting the export keyword.  G++ is way ahead of VC++ in proper template support.  The only other major supported C++ compiler I'm aware of is Borland's, and I think they basically mirror VC++'s policies.  Unless there are a whole bunch of supported C++ compilers that I'm not aware of, VC++ is one the least compliant compilers out there.

Of course, I haven't touched it in a few years, nor do I plan to.  Maybe it's gotten better.
« Last Edit: January 19, 2010, 09:40:40 PM by Average Software » Logged

Franchise - The restaurant wars begin!

What would John Carmack do?
Skomakar'n
Level 10
*****


Vąutah


View Profile WWW Email
« Reply #48 on: February 27, 2010, 04:57:17 AM »

I find it very comfortable to be able to use the same IDE for all systems, since I work with portable code, always (C++). I use Code::Blocks.

I'm about to get my first Mac now, though (hopefully delivered by tomorrow), and I might use Xcode if I like it. I'll have to see.
Logged

mak gam
Geisha Novia: Out now!
Bottoms Up!: Devlog

Royal Railway on Twitter.

Adam Emil
skyy
Level 2
**


[ SkyWhy ]

turunen.mika@luukku.com
View Profile
« Reply #49 on: February 27, 2010, 11:20:36 AM »

Long time visual studio user here, never tried the Express edition and never will. Before VS I used to roll with Dev-cpp which I cannot recommend to anyone and after that Code::Blocks which is a lovely piece of software and server me well for it's time. Still love it and have fond memories of it. But now.. VS.. Not going back, not moving forward Tongue Just waiting for VS2010 release.

All though when I'm going to move to Mac side I will have to let go of VS unless I emulate win and run VS through that but that sounds silly... But hey, you never know lol.

But definitely try out few different IDE's and see what rubs you the right way.  Giggle
Logged

Xecutor
Level 1
*


View Profile Email
« Reply #50 on: March 02, 2010, 06:07:29 AM »

I vote for Eclipse CDT!
Code completion and semantic highlighting of CDT is AWESOME!
Unless you are running really really old PC, Eclipse will run just fine.
Dispite the fact that it's written in java, they optimized it very well.
I'm using it on mac mini with 1.6Ghz CPU, and runs well.
There is some highlighting delay in case of really big files,
but editing is not slowed down by this delay.
And you can turn off semantic highlighting for big files.
On work I'm editing my files on mac with Eclipse CDT,
and invoking make on solaris server via ssh.
It's possible to configure custom errors/warnings parsers.

Eclipse is very well supported and evolving quickly.
I submitted several bugs and they were fixed.

I tried many different IDEs before Eclipse.
IMHO all other IDEs are on totally different level.
Give it a try.
It takes some time to configure everything to your preferences,
but once you'll make it, you can really enjoy conding in it.

There is also Visual Slick Edit. But it's commercial.
Our company had linux license of previous version.
It can be very well configured and extended via builtin
scripting language, but code completion and code navagation
is somewhat flowed.
Logged
Mikademus
Level 10
*****


The Magical Owl


View Profile
« Reply #51 on: March 02, 2010, 07:31:55 AM »

Does VC++ finally require the use of typename in templates when referring to dependent nested types?  This is another one that burns programmers coming from VC++ to other compilers.  Last I knew, VC++ would accept this illegal code:

Code:
template <typename Type>
void Funk(std::vector<Type> v)
{
    std::vector<Type>::iterator i; // Illegal.  Requires typename before std::vector<Type>::iterator.
}

As compared to older versions, VC9 adheres more to the typename requirement, but the code above still compiles and runs.

Nonetheless, another thing to take into consideration is that most Windows versions of libraries are expected to compile against VStudio/MSVC, and it can be quite messy to get them to compile on other IDEs/compilers. It may simply be more effort than it is worth. I use visual studio, but I really dislike some of the nefarious MS proprietary lock-in policies sneaking into the compiler, like generating "warning, strcmp/strcpy/etc are unsafe and deprecated, use our M$-specific strcmp_s/etc versions instead".  Lips Sealed
Logged

\\\"There\\\'s a tendency among the press to attribute the creation of a game to a single person,\\\" says Warren Spector, creator of Thief and Deus Ex. --IGN<br />My compilation of game engines for indies
Pages: 1 2 3 [4]
Print
Jump to:  

Theme orange-lt created by panic