As far as I know it is hard to learn using Eclipse from scratch. But I will get such benefits as fast source code browsing, call graphs, static code analysis. What other benefits will I get from using Eclipse for C++ (CDT)?
It can help make cross-platform development (for Windows and Linux) a lot easier.
I'd say that it is worth the effort to learn it. Eclipse for C++ isn't as good as for Java, but it still beats not having any IDE. F3 and Ctrl-Space is a good enough reason to leave any plain text editor behind.
Learning an IDE isn't a waste of your time at all. Try Eclipse, Visual Studio (if you're on that platform), Netbeans and anything you can think of. You might find something you really like.
Edit: Since you specify that you're on Windows, I'd say try out the free Visual Studio version. From my (limited) experience, it feels better suited for c++ on that platform.
Very much depends on what you do.
If you need to work on shared projects that use Eclipse => learn it. If you just write 10 or 100 lines of code altogether => use text editor.
If you just started coding, go for an IDE that works best for you. This can be Eclipse, but it could be Visual Studio on Windows or Xcode on Mac, especially given the choice of language.
For quite small projects, you can also get away with good editors that support syntax highlighting. Although a complete IDE makes editing, compiling and debugging much easier.
My choice is Xcode on Mac, Visual Studio on Windows. Eclipse only for Java for me on any platform.
I used Eclipse with C++ only for a short time, and rather I could use Eclipse with Java for some months. Now that I'm not using it, I feel that some important features are missing. Eclipse is pretty heavy, but has some great features that I can't find easily somewhere else.
I can live without code analysis and project management (for small projects), but some features about source code navigation and refactoring are really unique and I really miss them.
IMHO, Eclipse is worth learning, even if it won't become your default IDE.
I learned Eclipse for C++. It is flexible and offers many features. I no longer use it for C++.
What I found is that CDT feels like an "add on" rather than an intrinsically supported environment. Perhaps because it is an add on. Eclipse is written in and primarily supports Java development.
It was also rather buggy at the time but that was two years ago. I think today's CDT is probably more refined.
Lastly, it took a long time to start and some editing operations were rather slow. I was able to find a vi
plugin for it, but it wasn't free and wasn't a perfect emulation.
Today I use a commercial editor that is fast and doesn't feel like it is out of its element. I would encourage you to try Eclipse and see for yourself if it meets your needs.
I've been using Eclipse now for more than 6 years and I couldn't find a (free) IDE which has so many features.
I neside the obvious ones (automatic build, syntax highlighting, indexing of function etc) you have the plugins. You are working with a versioning system? No need to learn the command line commands. Just use the appropriate Eclipse Plugin (SVN, C++).
You are using a testing framework? CUTE and ECUT provide you with macros to create the test suites and summarise their results.
Another nice bonus: Eclipse is available for Windows/Linux/OS X although it is slightly superior on Linux (due to the easy availability of other tools)
If Eclipse still does not have keyboard macros I wouldn't touch it with a ten foot poll for development with any language. Better to use vim or emacs IMO, or better yet emacs in viper-mode. :)
If you don't want the giant size and lethargic performance of Eclipse, try Code::Blocks, which is a cross-platform C++ IDE actually written in C++. They have just released a spanking new version (10.05).
Some Points which should be true for most IDEs:
- automated generation of build scripts
- highligting of compiler errors and warnings in the source
- integration with source control svn, git, ... (subversion, egit, ...)
- code completion
- debugging
- other things (plugins)
Eclipse against other IDEs:
- Platform independent
- Free with complete functionality
Let me be very presumptuous for a moment and tell you what you really want.
You do not want to learn an IDE.
What you want is an easy and efficient tool, that will seamlessly assist you in writing c++ code. C++ is already difficult enough, ideally you should concentrate on it and forget about the IDE.
My advice. Let VI and Emacs to the dinosaurs. If you're on windows go for Visual Studio (the Express edition is freely available for personal use), otherwise Eclipse and Code::Blocks are good choices.
I rarely use an IDE. It is much easier and faster to use a good text editor (VEDIT) and then use make for building. Of course, you can call compilers, make, debugger etc. directly from VEDIT, then browse errors etc.
I have tried Eclipse a few times. The first thing I noticed is that it is really heavy. Cold start takes about 2 minutes on my machine, and subsequent starts around 20 to 30 seconds. (In comparison, with VEDIT, cold start is 1.5 seconds and any subsequent starts about 0.5 seconds.) The UI of Eclipse has lots of unnecessary clutter on screen, so there is not so much room for the code being edited. Eclipse can not edit files larger than a few megabytes, so you need another editor for editing large log files, memory dumps etc. anyway.
A good programmers editor does have fast source code browsing, function lists, call graphs etc, you do not need an IDE for that. The tools for static analysis (such as Lint, Klockworks etc.) are separate tools anyway, but you can call them from a text editor just as well as from IDE. Text editor can be integrated to version control, too (but you may need to do some configuration work yourself).
The advantage of a general purpose text editor is that you can use the same tool for all your text editing, so you will learn to use it effectively.
What is special about IDE is that it is usually more tightly coupled to some specific language. For example, it may contain full on-line help and code completion for the language library, API functions etc. Those may be useful to someone.