When comparing GNU Emacs vs Code::Blocks, the Slant community recommends Code::Blocks for most people. In the question“What are the best IDEs for C++ on UNIX-like systems?” Code::Blocks is ranked 4th while GNU Emacs is ranked 7th.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Infinitely customisable
Customizations can be made to a wide range of Emacs' functions through a Lisp dialect. A robust list of existing Lisp extensions include the practical (git integration, syntax highlighting, etc) to the utilitarian (calculators, calendars) to the sublime (chess, Eliza).
Pro Completely free
Licensed under GNU GPL.
Pro Keyboard-focused, mouse-free editing
Emacs can be controlled entirely with the keyboard.
Pro Works in terminal
You can use Emacs' command line interface or graphical user interface.
Pro Self documenting
Emacs has extensive help support built-in as well as a tutorial accessed with C-h t.
Pro Has turn-key packages for IDE work
Packs like spacemacs make it easy to get started and bring the learning curve down from an infinitely regressing spiral to something more manageable.
Pro Works over SSH
Pro Great Integration
Emacs has modes for nearly every use case, even ones like mail and internet browsing. It has often been said that Emacs is essentially an operating system on its own.
Pro Has Vim emulation
Evil-mode makes Emacs actually usable as an editor.
Pro Lightweight
Pro Easy to use
Pro Simple Library import
Cons
Con Non-standard keyboard commands
I'm editing this in Chrome, but I could be using Firefox, Edge, or any other browser, or Notepad, or even Libreoffice or Microsoft Word, and in ALL of those cases, keys would work exactly the same way, including how to jump around by word, select words, cut/copy/paste, etc.
Pretty much all modern editors share the same basic key combinations, from Visual Studio to Sublime to Atom to VS Code to Xcode. Becoming an Emacs expert means you need to mode-shift between code editing and editing in your browser; adding Emacs modes to SOME apps means you need to remember which key bindings to use where. The cognitive load added by switching between Emacs and other text editors is not worth it, especially since all the advantages of Emacs are now available in free editors elsewhere.
Con Not set up as an IDE by default
Requires customization to get IDE-like features. Luckily a few features such as compilation, debugging, and syntax highlighting are included.
Con Learning curve is steep
While it's better than it used to be, with most functions being possible through the menu, Emacs is still quite a bit different from your standard editor. You'll need to learn new keyboard shortcuts.
Con A UI designed before anyone had a clue about UI design
Emacs is positively NOT a well-designed user interface. Its design dates back to the time when all microwaves still needed instructions and VCRs universally displayed a flashing 12:00 because no one could figure out how to operate them. Many modern editors have 100% of the power of Emacs with none of the hassle.
Con Chorded keyboard combinations can be baffling
For example, for navigation it uses the b, n, p, l keys. Which for some people may seem strange.
Con Hard to set up
Con Not very feature rich
By default it's not much more than "What if Gedit had a compiler and a terminal built in?" (or: "What if Notepad had colour coding, auto indents, file structure, a compiler and a terminal built in?")
There are far more professional IDEs out there. This one is much too basic for any efficient use.
Con Slow navigation using mouse
In most IDE's, you can "goto declaration"/"implementation" by holding CTRL and left-clicking on an identifier or include directory. This does not work in Code::Blocks no matter what settings you have. Right-clicking will bring-up a menu that includes these "goto" options, but it's not instant and you'll be slowed down immensely depending on how often you have to do it.
Con Can get quite slow and doesn't look all that good
Con Setting up dark theme requires using system's own gui toolkit
Con Lots of functionality is encountered only in plugins
You can't change keyboard shortcuts, neither share themes with vanilla codeblocks, for example.