C++ Programming/Weblinks
Reference Sites
edit- Bjarne Stroustrup's C++ page.
- C++ Standard Library Technical Report.
- C++ Standards Committee's official website, previously at http://anubis.dkuug.dk/jtc1/sc22/wg21/ , ISO/IEC JTC1/SC22/WG21 is the international standardization working group for the programming language C++.
- The SGI Standard Template Library Programmer's Guide.
Compilers and IDEs
editFree or with free versions
edit- GCC , the GNU Compiler Collection, which includes a compiler for C++.
- MinGW, a Win32 port of the GNU Compiler Collection and toolset designed for compatibility with the host OS.
- Cygwin, a Win32 port of GCC and GNU Utils designed to simulate a Unix-style environment.
- The Microsoft Visual C++ 2010 Express Edition. It also allows you to build applications that target the Common Language Runtime (CLR). You should read their license for yourself to make sure. MFC, ATL and the Windows headers/libraries are not included with this version. To create Windows programs, you will need to download the Microsoft Platform SDK as well (for the Windows headers and import libraries).
- HP-GCC comprises the GNU C compiler targeted at the ARM processor of ARM-based HP calculators (like the HP49g+), HP specific libraries, a tool (ELF2HP) that converts the gcc produced binary to the appropriate format for the HP calculator, and an emulator (ARM Toolbox/ARM Launcher) that lets you execute ARM programs on your computer. At present, only a Windows version is available, but the site says that Linux and Mac OS X versions are "on the way".
- Ultimate++ a C++ cross-platform and Open Source rapid application development suite focused on programmers productivity. It includes a set of libraries (GUI, SQL, etc..), and an integrated development environment.
The IDE can work with GCC, MinGW and Visual C++ 7.1 or 8.0 compilers (including free Visual C++ Toolkit 2003 and Visual C++ 2005 Express Edition) and contains a full featured debugger.
- CodeLite, open-source under the terms of the GPL license, cross platform IDE for the C/C++ programming languages (tested on Windows XP SP3, (K)Ubuntu 8.04, and Mac OSX 10.5.2).
- Code::Blocks, C++ cross-platform and Open Source (GPL2) IDE, runs on Linux or Windows (uses wxWidgets), supports GCC (MingW/Linux GCC), MSVC++, Digital Mars, Borland C++ 5.5 and Open Watcom compilers. Offers syntax highlighting (customizable and extensible), code folding, tabbed interface, code completion, class browser, smart indent and a To-do list management with different users and more.
- Dev-C++, a free IDE including a distribution of MinGW. Delphi and C source code available.
- wxDev-C++, an IDE/RAD tool resulting from extending Dev-C++. With all the features of the previous plus others. Uses GCC for the compiler, and adds an IDE and a form designer supporting wxWidgets.
- Quincy 2005, a simple IDE for C and C++ under Windows. Installs the MinGW compiler and GDB debugger. Designed as a friendly learning environment. Public domain C++ source code.
- Djgpp, a free compiler for C, C++, Forth, Pascal and more including C sources. Runs under DOS.
- Digital Mars, a free C and C++ Compiler for DOS, Win & NT by the author of Zortech C++.
- Macintosh Programmer's Workshop (MPW). Same software and documentation as the "Tool Chest:Development Kits:MPW etc." folder on the August 2001 Developer CD.
- OpenWatcom, the Open Watcom is a joint effort between SciTech Software, Sybase®, and a select team of developers, which will bring the Sybase Watcom C, C++ and Fortran compiler products to the Open Source community.
- Microsoft eMbedded Visual C++ allows you to develop for Windows CE. It includes an IDE, which includes an integrated debugger.
- Borland C++Builder v5.5
- Eclipse, a multi-language IDE with support for C++ through the CDT plugin. It requires a GCC backend. There is a download specifically for C++ developers that does not include the Java libs.
Commercial
edit- Intel Compiler, a Intel® compilers. Compatible with the tools developers use, Intel compilers plug into popular development environments and feature source and binary compatibility with widely-used compilers. Every compiler purchase includes one year of Intel® Premier Support, providing updates, technical support and expertise for the Intel® architecture. [Intel CPUs ONLY]
- Comeau C/C++ Compiler. Available for purchase Comeau C/C++ supports Core C++03 language enhancements for all major and minor features of C++ and C, including export.
Misc. C++ Tools
editFree or with a free version
edit- Doxygen is a documentation system for C++, C, and other programming languages.
- Valgrind, a system for debugging and profiling applications at runtime. The system runs on nearly any x86 linux (sorry, no amd64 yet). It can detect memory leaks, illegal memory access, double deletes, cache misses, code coverage and much, much more.
- Microsoft Visual C++ Toolkit 2003, This is a free optimizing compiler provided by Microsoft that developers can use to develop and compile applications in C or C++. It is the same compiler that ships with the professional edition of Visual Studio. It ships with the standard library and sample code.
- ccbuild, a C++ source scanning build utility for code distributed over directories. Like a dynamic Makefile, ccbuild finds all programs in the current directory (containing "int main") and builds them. For this, it reads the C++ sources and looks at all local and global includes. All C++ files surrounding local includes are considered objects for the main program. The global includes lead to extra compiler arguments using a configuration file. Next to running g++ it can create simple Makefiles, A-A-P files, and graph dependencies using DOT (Graphviz) graphs. (Linux only)
Free or with free versions
edit- The Boost web site. Boost is a large collection of high-quality libraries for C++, some of which are likely to be included in future C++ standards.
- The WFC (Win32 Foundation Classes) site.
- The WTL site.
- Blitz++ is a C++ class library for scientific computing which provides performance on par with Fortran 77/90. It uses template techniques to achieve high performance. The current versions provide dense arrays and vectors, random number generators, and small vectors and matrices. Blitz++ is distributed freely under an open source license, and contributions to the library are welcomed.
- STLFilt is a STL Error Message Decryptor for C++. It simplifies and/or reformats long-winded C++ error and warning messages, with a focus on STL-related diagnostics.
- GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers. There is no practical limit to the precision except the ones implied by the available memory in the machine GMP runs on.
- Crypto++ Library is a free C++ class library of cryptographic schemes.
- Allegro is a game programming library for C/C++ developers distributed freely, supporting the following platforms: DOS, Unix (Linux, FreeBSD, Irix, Solaris, Darwin), Windows, QNX, BeOS and MacOS X. It provides many functions for graphics, sounds, player input (keyboard, mouse and joystick) and timers. It also provides fixed and floating point mathematical functions, 3d functions, file management functions, compressed datafile and a GUI.
- FLTK (pronounced "fulltick") is a cross-platform C++ GUI toolkit for UNIX®/Linux® (X11), Microsoft® Windows®, and MacOS® X. FLTK provides modern GUI functionality without the bloat and supports 3D graphics via OpenGL® and its built-in GLUT emulation. FLTK is designed to be small and modular enough to be statically linked, but works fine as a shared library. FLTK also includes an excellent UI builder called FLUID that can be used to create applications in minutes.
- Simple DirectMedia Layer is a cross-platform multimedia library for C/C++. It provides low-level access to 2D frame-buffer and hardware accelerated 3D graphics(using OpenGL), audio, threads, timers,user input and event handling. Other features are available through "plug-in libraries". Linux, Windows, BeOS, MacOS Classic, MacOS X, FreeBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX are supported and there's some unofficial support for other platforms. SDL is available under the GNU LGPL license.
- SDKs for older platforms and from third parties. Includes a redistributable that contains the MFC library's for Windows CE 1, 2, HPC Pro, Palm-Size PC 1.2, HPC2000 and a limited number from Windows CE 4.0.
- Qt (pronounced "cute"), a multi-platform API that contains a UI toolkit as well as a core library. It is extremely modular, but to use it effectively, you should use at least UI+Core.
- Loki is a C++ library which demonstrates and encourages the use of generic programming and design patterns. It was written to accompany the book entitled "Modern C++ Design." The library includes a parametrized smart pointer class, generalized functors, a multi-threading abstraction, and some help for important patterns. Open source released under the MIT license.
- TinyThread++, a light weight, portable C++ thread library that implements a subset of the C++0x standard, including the thread, mutex and condition_variable classes. Open source, released under the zlib/libpng License.
Commercial
edit- Poco C++ Libraries. Written in modern, standard ANSI C++, using the C++ Standard Library. Modular design, very few external dependencies, builds out-of-the-box. Good mix of "classic" object-oriented design with modern C++. Clean, easy-to-understand code, consistent coding style, comprehensive test suite.
C++ Coding Conventions
editSource Code Formatting rules
edit- Kernighan and Ritchie (or K&R) style
- GNU Programmer's Style Guide
- Linux kernel coding style
Comprehensive Source Code Convention guidelines
edit- QuantLib Programming Style Guidelines
- Bjarne Stroustrup's C++ Style and Technique FAQ
- The C++ Style Sweet Spot A Conversation with Bjarne Stroustrup, Part I by Bill Venners
- KDE Binary Compatibility Issues With C++
- Mozilla C++ portability guide
- Programming in C++, Rules and Recommendations by FN/Mats Henricson and Erik Nyquist
- Wildfire C++ Programming Style With Rationale by Keith Gabryelski
- Musings on Good C++ Style (Technology) by GoingWare
- Google C++ Style Guide
- CERT C++ Secure Coding Standard
- Joint Strike Fighter air vehicle: C++ coding standards 2005
- C and C++ Style Guides by Chris Lott, lists many popular C++ style guides.
- MISRA C++: Guidelines for the use of the C++ language in critical systems published by The Motor Industry Software Reliability Association (MISRA) (based on a subset of C++).
- A very funny satiric text that turns the tables on the issues concerning coding style by Roedy Green.
Online C++ books, guides and general information
edit- More C++ Idioms, covering modern C++ idioms.
- Windows Programming, a Wikibook on Windows API (C and VB Classic), MFC (C++), COM and creation of ActiveX modules.
- Optimizing C++, covering how C++ programmers can improve a program's performance.
- Linux Applications Debugging Techniques, a hands-on guide to debugging applications under Linux.
- C++ In Action, by Bartosz Milewski
- Teach Yourself C++ in 21 Days, Second Edition
- More C++, by Tim Love, July 5, 2001
- Introduction to Object-Oriented Programming Using C++, by Peter Müller, 1997.
- C++ Programming for Scientists, by Roldan Pozo and Karin Remington
- C++ for Unix, a broken link, a quick reference, with C variations
- STL Quick Reference, probably by Pablo Halpern,
- C++ A dialog, by Steve Heller
- Learning C++: An Index of Entry Points
- C++ Programming How-ToPDF, by Al Dev (Alavoor Vasudevan), 2001
- Think like a computer scientist: C++
- C++ Programming Tutorial for the beginners
References to other works that can be relevant to the topic:
- Kohl et al. 2004: C/C++ Reference at cppreference.com
- The C++ Annotations for C programmers, by Frank B. Brokken
- C / C++ Tutorials at pickatutorial.com, a collection of online C / C++ tutorials
- cplusplus.com, an open resource with various web discussion groups
- A web site of Scott Meyers, an expert on C++ software development. He wrote the best-selling Effective C++ series (Effective C++, More Effective C++, and Effective STL), wrote and designed Effective C++ CD
- Cprogramming.com, a web site designed to help you learn C or C++ and provide you with C and C++ programming resources.
- Misc. Books, News & Articles on C++, by orelily.com
- Frequently Asked Questions About Win32 Programming, from iseran.com
- CppHeresy at c2.com, guidelines about how to keep the C++ bits simple
- C++ FAQ at parashift.com, sometimes also called C++ FAQ Lite.
- Defective C++: a 2009 summary by Yossi Kreinin of the major defects he finds in the C++ programming language. (Related: Particularities of the C programming language).
- The Boost C++ Libraries online book that introduces many Boost libraries in a tutorial style and complements the official documentation. Under a Creative Commons Attribution - NonCommercial - NoDerivatives 4.0 International License.
IRC
edit- #C at (irc://irc.tambov.ru)
- C/C++ Channel (http://silversoft.net/) (Russian Channel)
- #C++ at (irc://hub.ptnet.org)
- C++ Channel (Portuguese Channel)
- #C++ at (irc://irc.euirc.net)
- C++ Channel (German Channel)
- ##C++ at (irc://irc.freenode.net)
- C++ Channel
- #c++newbie at (irc://irc.freenode.net)
- Channel for those new to C++
- #c++ at (irc://irc.dynastynet.net)
- Channel on DynastyNet for discussing C++ topics.
User Groups
edit- ACCU, formerly the Association for C and C++ Users, ACCU is a non-profit organization devoted to professionalism in programming at all levels. Although primarily focused on C and C++, have now interests in Java, C# and Python also.
Newsgroups (NNTP)
edit- comp.std.c++ - FAQ
- comp.lang.c++.leda
- comp.lang.c++.moderated
- comp.lang.c++
- microsoft.public.vc.mfc
- microsoft.public.vc.stl
Blogs and Wikis
edit- a Wikipedia-like page with much code examples.
- TWiki C++ Web is a C++ wiki with GNU Free Documentation License
- Wikicities C++ is a multi-language C++ wiki (currently English and Polish).
Mailing Lists
edit- Object-Oriented Numerics List, forum for discussing scientific computing in object-oriented environments. An archive is available.
Forums
edit- Stackoverflow is a knowledge sharing community including discussing C++ related topics.