About ILE C/C++ Language Reference

The C/C++ Language Reference describes the syntax, semantics, and IBM® implementation of the C and C++ programming languages. Syntax and semantics constitute a complete specification of a programming language, but complete implementations can differ because of extensions. The IBM implementations of Standard C and Standard C++ attest to the organic nature of programming languages, reflecting pragmatic considerations and advances in programming techniques, which are factors that influence growth and change. The language extensions to C and C++ also reflect the changing needs of modern programming environments.

The aims of this reference are to provide a description of the C and C++ languages outside of any comprehensive historical context, and to promote a programming style that emphasizes portability. The expression Standard C is a generic term for the current formal definition of the C language, preprocessor, and runtime library. The expression is ambiguous because subsequent formal definitions of the language have appeared while implementations of its predecessors are still in use. This reference describes a C language consistent with the C89 language level. To avoid further ambiguity and confusion with K&R C, this reference uses ISO C to mean Standard C, avoiding the term Standard C, and the term K&R C to refer to the C language plus the generally accepted extensions produced by Brian Kernighan and Dennis Ritchie (K&R C) that were in use prior to ISO C. The expression Standard C++ refers to the C++ language Standard (ISO/IEC 14882:2003).

The C and C++ languages described in this reference are based on the following standards:
  • Information Technology - Programming languages - C, ISO/IEC 9899:1990, also known as C89
  • Information Technology - Programming languages - C, ISO/IEC 9899:1999, also known as C99
  • Information Technology - Programming languages - C++, ISO/IEC 14882:1998, also known as C++98
  • Information Technology - Programming languages - C++, ISO/IEC 14882:2003(E), also known as Standard C++
  • Information Technology - Programming languages - Extension for the programming language C to support decimal floating-point arithmetic, ISO/IEC WDTR 24732. This draft technical report has been submitted to the C standards committee, and is available at http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1176.pdf.
In addition to the standardized language levels, ILE C++ supports a subset of C++0x features.
Note: C++0x is a new version of the C++ programming language standard. IBM continues to develop and implement the features of the new standard. The implementation of the language level is based on IBM's interpretation of the standard. Until IBM's implementation of all the features of the C++0x standard is complete, including the support of a new C++ standard library, the implementation may change from release to release. IBM makes no attempt to maintain compatibility, in source, binary, or listings and other compiler interfaces, with earlier releases of IBM's implementation of the new features of the C++0x standard and therefore they should not be relied on as a stable programming interface.

C++0x has been ratified and published as ISO/IEC 14882:2011. All references to C++0x in this document are equivalent to the ISO/IEC 14882:2011 standard. Corresponding information, including programming interfaces, will be updated in a future release.

OS/400 The C++ language described in this reference is consistent with Standard C++ and documents the features supported by the IBM C++ compiler.