C++: Difference between revisions
Line 7: | Line 7: | ||
==OS/2 implementations== | ==OS/2 implementations== | ||
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2"> | <div style="column-count:2;-moz-column-count:2;-webkit-column-count:2"> | ||
* [[Borland C++ for OS/2]] | * [[Borland C++ for OS/2]] | ||
* [[Glockenspiel C++]] | * [[Glockenspiel C++]] | ||
* GNU | * GNU C++ (g++) - Open Source | ||
* [[IBM C Set++ for OS/2]] | |||
* [[VisualAge C++|IBM VisualAge C++]] | |||
* [[Metaware High C/C++]] | |||
* [[IBM C Set++ for OS/2]] | * Microway [[NDP C/C++]] | ||
* [[VisualAge C++|IBM VisualAge C++]] | * [[Open Watcom|OpenWatcom C/C++]] - Open Source | ||
* [[Metaware High C/C++]] | * JPI [[TopSpeed C++]] | ||
* Microway [[NDP C/C++]] | * Watcom C/C++ | ||
* [[Open Watcom|OpenWatcom C/C++]] - Open Source | * [[Zortech C++]] | ||
* JPI [[TopSpeed C++]] | |||
* Watcom C/C++ | |||
* [[Zortech C++]] | |||
</div> | </div> | ||
;Interpreters | ;Interpreters | ||
* [[Cint]] - Open source | * [[Cint]] - Open source - [https://root.cern.ch/drupal/content/cint Interpreter from CERN], intended for educational use | ||
===OS/2 C++ libraries and class libraries=== | ===OS/2 C++ libraries and class libraries=== | ||
If the compiler | If the compiler supports both C and C++, you can use C libraries with C++ programs and vice versa. However using C++ libraries from C can be a bit kludgey and require you to write bindings. While using C libraries from C++ is less problematic it can also require you to write some interfaces, take a look at the [[C|C page]] for available C libraries. Also see the [[Standard Template Library]] for STL support. | ||
==== GUI class libraries ==== | ==== GUI class libraries ==== | ||
* [[Cubus OS/2 Class Library]] - Encapsulates PM and VIO API's - Open source | * [[Cubus OS/2 Class Library]] - Encapsulates PM and VIO API's - Open source | ||
* Liant [[C++/Views]] - Multi-platform app framework/GUI library | * Liant [[C++/Views]] - Multi-platform app framework/GUI library | ||
* [[ObjectPM]] - [[Presentation Manager]] classes | * [[ObjectPM]] - [[Presentation Manager]] classes | ||
* [[OpenZinc]] (formerly ''Zinc'') - Multi-platform UI library - Originally commercial, now open source | * [[OpenZinc]] (formerly ''Zinc'') - Multi-platform UI library - Originally commercial, now open source | ||
* [[Qt]] - Multi-platform application and UI framework | * [[Qt]] - Multi-platform application and UI framework | ||
* StarDivision StarView | * StarDivision StarView | ||
* [[V C++ GUI Framework]] - Multi-platform - Open source | * [[V C++ GUI Framework]] - Multi-platform - Open source | ||
==== Database and file management ==== | ==== Database and file management ==== | ||
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2"> | <div style="column-count:2;-moz-column-count:2;-webkit-column-count:2"> | ||
* [[C/Database Toolchest]] - Library for database creation and maintenance | * [[C/Database Toolchest]] - Library for database creation and maintenance | ||
* [[CdBFile]] - For reading/writing .dbf/[[xBase]] files - Open Source | * [[CdBFile]] - For reading/writing .dbf/[[xBase]] files - Open Source | ||
* [[CSLIB]] - Database classes and generator | * [[CSLIB]] - Database classes and generator | ||
* [[CThrough]] - Graphics class library | * [[CThrough]] - Graphics class library | ||
* [[dbfLIB|dbfLIB++]] - A tool that allows you to work with [[xBase]] databases | * [[dbfLIB|dbfLIB++]] - A tool that allows you to work with [[xBase]] databases | ||
* [[e_Comm]] - Communications and networking | * [[e_Comm]] - Communications and networking | ||
* [[e_Db]] - Database engine | * [[e_Db]] - Database engine | ||
* [[e_Fs]] - Virtual file system | * [[e_Fs]] - Virtual file system | ||
* [[Kroni's Classes]] - Class library with sundry PM functions - PostcardWare | * [[Kroni's Classes]] - Class library with sundry PM functions - PostcardWare | ||
* [[Lily]] - Embeddable [[LISP]] - Open Source | * [[Lily]] - Embeddable [[LISP]] - Open Source | ||
* [[Net.h++]] - Networking and comms | * [[Net.h++]] - Networking and comms | ||
* [[The Open Objects Library (OOL)]] - Originally freeware, now open source | * [[The Open Objects Library (OOL)]] - Originally freeware, now open source | ||
* [[Socket++]] - Networking library - Open Source | * [[Socket++]] - Networking library - Open Source | ||
* [[Threads.h++]] - Multi-threading | * [[Threads.h++]] - Multi-threading | ||
* [[Tools.h++]] - Foundation classes | * [[Tools.h++]] - Foundation classes | ||
* [[WebM libvpx]] - VP8/VP9 streaming video - Open Source | * [[WebM libvpx]] - VP8/VP9 streaming video - Open Source | ||
* [[Xerces C++]] - XML parser - Open Source | * [[Xerces C++]] - XML parser - Open Source | ||
* [[ZGRAF]] - Graphing library | * [[ZGRAF]] - Graphing library | ||
</div> | </div> | ||
==== Data compression ==== | ==== Data compression ==== | ||
* [[LZ4]] - Compression library - | Open source: | ||
* [[Snappy]] - Compression library | * [[LZ4]] - Compression library - | ||
* [[Zipios++]] - Compression class | * [[Snappy]] - Compression library | ||
* [[Zipios++]] - Compression class library | |||
====Signal processing==== | ====Signal processing==== | ||
* [[Aquila]] - DSP library | * [[Aquila]] - DSP library | ||
* [[Simple SPL]] - DSP library - Freeware | * [[Simple SPL]] - DSP library - Freeware | ||
====Foreign libraries with C++ bindings==== | ====Foreign libraries with C++ bindings==== | ||
* [[Cairo]] - 2D graphics library - Open source | * [[Cairo]] - 2D graphics library - Open source | ||
* [[LibcURL]] - Internet URL (WWW, FTP, etc) access - Open Source | * [[LibcURL]] - Internet URL (WWW, FTP, etc) access - Open Source | ||
* [[Libxml2]] - [[XML]] parser - Open source | * [[Libxml2]] - [[XML]] parser - Open source | ||
* [[Libxslt]] - XSLT parser - Open source | * [[Libxslt]] - XSLT parser - Open source | ||
* [[Simple Directmedia Layer]] - Multimedia - Open Source | * [[Simple Directmedia Layer]] - Multimedia - Open Source | ||
* [[shwild]] - Wildcard pattern matching - Open Source | * [[shwild]] - Wildcard pattern matching - Open Source | ||
=== GUI and application generators with C++ output === | === GUI and application generators with C++ output === | ||
* [[Hockware VisPro/C++]] - GUI Creator | * [[Hockware VisPro/C++]] - GUI Creator | ||
* [[JBA Guidelines]] - GUI/Database/Application creator | * [[JBA Guidelines]] - GUI/Database/Application creator | ||
* [[Professor Owl]] - Open Source | * [[Professor Owl]] - Open Source - For [[Borland]] OWL only | ||
* Vestronix Pro C - Database and spreadsheet application generator | * Vestronix Pro C - Database and spreadsheet application generator | ||
=== Translators that generate C++ output === | === Translators that generate C++ output === | ||
*Oracle Pro C - SQL > C++ | *Oracle Pro C - SQL > C++ | ||
*[[Tower Eiffel]] - Can optionally generate C++ instead of native output | *[[Tower Eiffel]] - Can optionally generate C++ instead of native output | ||
=== Workframes and or IDE's === | === Workframes and or IDE's === | ||
*CommonPoint | *CommonPoint | ||
*Object WorkBench - Shareware | *Object WorkBench - Shareware | ||
=== Code verifiers, beautifiers, visualisers and other C++ source code utilities === | === Code verifiers, beautifiers, visualisers and other C++ source code utilities === | ||
* [[CC-Rider C++]] | * [[CC-Rider C++]] - Static analyser, beautifier and visualiser. | ||
* [[DOC++]] - Automatic document generator - Open source | * [[DOC++]] - Automatic document generator - Open source | ||
* [[Ephedra]] - C/C++ to Java - Open source | * [[Ephedra]] - C/C++ to Java - Open source | ||
* [[Exuberant ctags]] - Creates index files out of C++ source files - Open source | * [[Exuberant ctags]] - Creates index files out of C++ source files - Open source | ||
* PC-Lint | * PC-Lint | ||
* [[SourceLink]] | * [[SourceLink]] - Browser/Editor/Visualiser | ||
===C++ source code snippets, archives and collections=== | ===C++ source code snippets, archives and collections=== | ||
Line 109: | Line 106: | ||
=== Editor support === | === Editor support === | ||
* [[Boxer]] - C++ support included by default | * [[Boxer]] - C++ support included by default | ||
* [[BRIEF]] - C++ support included by default | * [[BRIEF]] - C++ support included by default | ||
* [[Elvis]] - C++ syntax support included by default - Open source | * [[Elvis]] - C++ syntax support included by default - Open source | ||
* [[Enhanced Editor]] - Has C++ syntax highlighting built in, auto-formatting and automatic code summary as a separate download. | * [[Enhanced Editor]] - Has C++ syntax highlighting built in, auto-formatting and automatic code summary as a separate download. | ||
* [[FTE]] - Has support for syntax highlighting, code folding and syntax-aware autoindent. | * [[FTE]] - Has support for syntax highlighting, code folding and syntax-aware autoindent. | ||
* [[Future Wave Editor]] - C++ syntax support included by default - Shareware | * [[Future Wave Editor]] - C++ syntax support included by default - Shareware | ||
* [[jEdit]] - Java based - Open source | * [[jEdit]] - Java based - Open source | ||
* [[LPEX]] | * [[LPEX]] - OS/2 version discontinued | ||
* [[Lugaru Epsilon]] - C++ syntax highlighting, code folding and syntax-aware autoindent | * [[Lugaru Epsilon]] - C++ syntax highlighting, code folding and syntax-aware autoindent | ||
* [[NEdit]] - XFree86 - Autoindent, autocomplete and syntax highlighting | * [[NEdit]] - XFree86 - Autoindent, autocomplete and syntax highlighting | ||
* [[Preditor/2]] - C++ template with syntax highlighting | * [[Preditor/2]] - C++ template with syntax highlighting | ||
* [[SourceLink]] | * [[SourceLink]] - Browser/Editor/Visualiser | ||
==DOS implementations== | ==DOS implementations== |
Revision as of 12:39, 30 November 2018

A language in the CPL branch of the Algol family of programming languages, C++ is basically AT&T C with the object-oriented features of Simula. While you can compile and run C programs in an C++ environment and some C++ compilers are actually just C compilers with a pre-processor, C++ is in fact a very distinct language to C that by design uses mostly the same syntax.
History
C++ was first implemented as a rudimentary pre-processor for C in 1979 and was then known simply as C with Classes, the name was changed to C84 in 1983 and when people realised that it would clash with the naming convention for the ANSI C formal standard process that had already begun it was changed again to C++ in 1985.
OS/2 implementations
- Borland C++ for OS/2
- Glockenspiel C++
- GNU C++ (g++) - Open Source
- IBM C Set++ for OS/2
- IBM VisualAge C++
- Metaware High C/C++
- Microway NDP C/C++
- OpenWatcom C/C++ - Open Source
- JPI TopSpeed C++
- Watcom C/C++
- Zortech C++
- Interpreters
- Cint - Open source - Interpreter from CERN, intended for educational use
OS/2 C++ libraries and class libraries
If the compiler supports both C and C++, you can use C libraries with C++ programs and vice versa. However using C++ libraries from C can be a bit kludgey and require you to write bindings. While using C libraries from C++ is less problematic it can also require you to write some interfaces, take a look at the C page for available C libraries. Also see the Standard Template Library for STL support.
GUI class libraries
- Cubus OS/2 Class Library - Encapsulates PM and VIO API's - Open source
- Liant C++/Views - Multi-platform app framework/GUI library
- ObjectPM - Presentation Manager classes
- OpenZinc (formerly Zinc) - Multi-platform UI library - Originally commercial, now open source
- Qt - Multi-platform application and UI framework
- StarDivision StarView
- V C++ GUI Framework - Multi-platform - Open source
Database and file management
- C/Database Toolchest - Library for database creation and maintenance
- CdBFile - For reading/writing .dbf/xBase files - Open Source
- CSLIB - Database classes and generator
- CThrough - Graphics class library
- dbfLIB++ - A tool that allows you to work with xBase databases
- e_Comm - Communications and networking
- e_Db - Database engine
- e_Fs - Virtual file system
- Kroni's Classes - Class library with sundry PM functions - PostcardWare
- Lily - Embeddable LISP - Open Source
- Net.h++ - Networking and comms
- The Open Objects Library (OOL) - Originally freeware, now open source
- Socket++ - Networking library - Open Source
- Threads.h++ - Multi-threading
- Tools.h++ - Foundation classes
- WebM libvpx - VP8/VP9 streaming video - Open Source
- Xerces C++ - XML parser - Open Source
- ZGRAF - Graphing library
Data compression
Open source:
Signal processing
- Aquila - DSP library
- Simple SPL - DSP library - Freeware
Foreign libraries with C++ bindings
- Cairo - 2D graphics library - Open source
- LibcURL - Internet URL (WWW, FTP, etc) access - Open Source
- Libxml2 - XML parser - Open source
- Libxslt - XSLT parser - Open source
- Simple Directmedia Layer - Multimedia - Open Source
- shwild - Wildcard pattern matching - Open Source
GUI and application generators with C++ output
- Hockware VisPro/C++ - GUI Creator
- JBA Guidelines - GUI/Database/Application creator
- Professor Owl - Open Source - For Borland OWL only
- Vestronix Pro C - Database and spreadsheet application generator
Translators that generate C++ output
- Oracle Pro C - SQL > C++
- Tower Eiffel - Can optionally generate C++ instead of native output
Workframes and or IDE's
- CommonPoint
- Object WorkBench - Shareware
Code verifiers, beautifiers, visualisers and other C++ source code utilities
- CC-Rider C++ - Static analyser, beautifier and visualiser.
- DOC++ - Automatic document generator - Open source
- Ephedra - C/C++ to Java - Open source
- Exuberant ctags - Creates index files out of C++ source files - Open source
- PC-Lint
- SourceLink - Browser/Editor/Visualiser
C++ source code snippets, archives and collections
Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.
- Dave Briccetti's Programming Samples - Sundry C++ code example
- OS/2 Primecuts - OS/2 API Examples - Open source
- PostWhat WPS Class Example - WPS code and registration example - Open Source
Applications with a C++ programming interface
- PostgreSQL - SQL relational database system - Open source
Editor support
- Boxer - C++ support included by default
- BRIEF - C++ support included by default
- Elvis - C++ syntax support included by default - Open source
- Enhanced Editor - Has C++ syntax highlighting built in, auto-formatting and automatic code summary as a separate download.
- FTE - Has support for syntax highlighting, code folding and syntax-aware autoindent.
- Future Wave Editor - C++ syntax support included by default - Shareware
- jEdit - Java based - Open source
- LPEX - OS/2 version discontinued
- Lugaru Epsilon - C++ syntax highlighting, code folding and syntax-aware autoindent
- NEdit - XFree86 - Autoindent, autocomplete and syntax highlighting
- Preditor/2 - C++ template with syntax highlighting
- SourceLink - Browser/Editor/Visualiser
DOS implementations
- Borland C++ - Commercial - Discontinued
- Borland Turbo C++ - Commercial - Discontinued
- Comeau C++ - Commercial
- EMX Compiler - Open Source - Discontinued
- GUIDELINES C++
- Intek C++
- Metaware High C/C++ - Commercial - Discontinued
- Microsoft C/C++ 7.0 - Commercial - Discontinued
- Oasys Designer C++ (Glockenspiel C++)
- OpenWatcom C/C++ - Open Source - Current
- Orange C/C++ Compiler - Open Source - Current
- Salford Software C++ - Commercial - Discontinued
- TopSpeed C++ - Commercial - Discontinued
- Digital Mars C/C++, Symantec C++, Zortech C++ - Commercial
- Interpreter
- Cint - Open source - Current - Interpreter from CERN, intended for educational use
Class libraries
- C/Database Toolchest - Library for database creation and maintenance - Commercial - Current.
- CdBFile - For reading/writing .dbf/xBase files - Open Source - Discontinued.
- e_Db - Databse engine - Commercial - Discontinued.
- ZGRAF - Graphing library - Commercial - Current
Editors support
- Boxer - C++ support included by default - Commercial - Discontinued
- BRIEF - Commercial - Discontinued
- Elvis - C++ syntax support included by default - Open source - Current
- FTE - Has support for syntax highlighting, code folding and syntax-aware autoindent.
Implementations that run under WinOS/2
- Microsoft C/C++ 7.0 - Commercial - Discontinued
- TopSpeed C++ - Commercial - Discontinued - Cross compilation from DOS or OS/2 only
WinOS/2 compatible libraries and class libraries
- C/Database Toolchest - Library for database creation and maintenance - Commercial - Current - Note that the correct library for Win16b development is called the DOS library (but contains Win 16b libs as well) and not the Windows one.
- Net.h++ - Networking and comms - Commercial - Discontinued.
- Tools.h++ - Foundation classes - Commercial - Discontinued.
- V C++ GUI Framework - Multi-platform - Open source - Discontinued
Publications
Note that product specific publications are listed on their relative product page.
- Björn Fahller: Encapsulating Extended Attributes
- Dave Briccetti: Use DosAllocMem for Boundary Overflow Protection
- Darrell Spice: STLport and VAC++ for OS/2
- Gordon Zeglinski: The STL (Standardized Template Library)
- Standard Template Library
Books
- Bjarne Stroustrup: The C++ Programming Language (4th edition) - 2013, ISBN 0321958322
- More or less the standard text for learning C++, requires some prior programming knowledge, preferably C.
- Bjarne Stroustrup: The C++ Programming Language (2nd edition) - Addison-Wesley 1990, ISBN 0-201-53992-6
- An older version of the same book, again not for beginners but at half the size of the current version this is in some ways a better read for those that are using vintage compilers such as VisualAge C++.
- Margaret A. Ellis & Bjarne Stroustrup: The Annotated C++ Reference Manual - Addison-Wesley 1990, ISBN 0-201-51459-1
- In some ways better than the other Stroustrup works as a reference book, the explanations of some of the rules are much clearer. Not a tutorial, not for beginners.
- Taligent: Taligent's Guide to Designing Programs: Well Mannered Object-Oriented Design in C++ - Addison-Wesley 1994 - Available to read online form here - ISBN 0-201-40888-0
- Although outdated, a really good introduction to object oriented C++, not a beginners book but suitable for intermediate and advanced users.
- Anthony S. Rudd: C++ Complete: A Reference and Tutorial to the Proposed C++ Standard - Wiley 1994, ISBN 0-471-06565-X
- Kris Jamsa: Jamsa's C/C++/C# Programmer's Bible: 2nd edition - Delmar Cengage Learning 2002, ISBN 0766846822
Articles
- David R. Tribble: Incompatibilities Between ISO C and ISO C++ - Old but highly useful document for those wanting to port C code to C++
Tutorials and other learning material
- EDM/2 has its own C++ tutorial written by Terry Norton:
Part 1, Part 2, Part 3, Part 4, Part 5, Part 6
- MIX Software has a number of video courses available that focus on teaching C++, both for the beginner and tackles more advanced topics as well, note that these are delivered in VHS cassette format.
- The author of C++, Bjarne Stroustrup has a lot of introductory material on his homepage
Links
- The A-Z of Programming Languages: C++ - An interview with Bjarne Stroustrup - From Computerworld.
- USENET
- comp.lang.c++.moderated - Moderated C++ discussion group
- Frequently Asked Question lists (FAQ's)
- The "Super" FAQ - By Marshall Cline, Bjarne Stroustrup, Herb Sutter and Andrei Alexandresc.
- The "Lite" C++ FAQ - By Marshall Cline, the original FAQ from 1991.
- Available C++ Libraries FAQ - A huge list of C++ class libraries, for all platforms but a tad outdated.
- Alternative C++ FAQ - From Cprogramming.com.
Standards
Apart from the original AT&T documents there appear to be no sources of free C++ standards texts, not even pre-publication or beta editions.
- Initially all C++ compilers and/or pre-processors were based on the original Bjarne Stroustrup pamphlets published by AT&T as C++ Reference Manual, Data Abstraction in C and C++ Tutorial.
- ISO/IEC 14882:1998 - Aka C++98, the first formal standard, largely written by Stroustrup himself.
- ISO/IEC 14882:2003 - Aka C++03 - Also has a "C++ Technical Report 1" with clarifications and errata or ISO/IEC TR 19768:2007, that is sometimes referred to as C++07.
- ISO/IEC 14882:2011 - Aka C++11
- N3690 (working draft) - Aka C++14 - Had not been finalised in early 2015.
- According to the working group a new standard is scheduled to be introduced in 2017, so presumably C++17.
- ISO C++ Working group homepage