C

The programming language C is so important for many of the programs people use everyday on their computers. C is used for database systems, network drivers and word processors to name a few. These standards go into the specifics of this language.

ISO/IEC 9899:2018

Information technology - Programming languages - C

1 This document specifies the form and establishes the interpretation of programs written in the C

programming language.1) It specifies

- the representation of C programs;

- the syntax and constraints of the C language;

- the semantic rules for interpreting C programs;

- the representation of input data to be processed by C programs;

- the representation of output data produced by C programs;

- the restrictions and limits imposed by a conforming implementation of C.

2 This document does not specify

- the mechanism by which C programs are transformed for use by a data-processing system;

- the mechanism by which C programs are invoked for use by a data-processing system;

- the mechanism by which input data are transformed for use by a C program;

- the mechanism by which output data are transformed after being produced by a C program;

- the size or complexity of a program and its data that will exceed the capacity of any specific

data-processing system or the capacity of a particular processor;

- all minimal requirements of a data-processing system that is capable of supporting a conforming

implementation.

ISO/IEC TR 18037:2008

Programming languages - C - Extensions to support embedded processors

ISO/IEC TR 18037:2008 specifies a series of extensions of the programming language C, which is specified by ISO/IEC 9899:1999. These extensions support embedded processors.

ISO/IEC TS 17961:2013

Information technology - Programming languages, their environments and system software interfaces - C secure coding rules

ISO/IEC TS 17961:2013 specifies

  • rules for secure coding in the C programming language, and
  • code examples.

ISO/IEC TS 17961:2013 does not specify

  • the mechanism by which these rules are enforced, or
  • any particular coding style to be enforced.

Each rule in this Technical Specification is accompanied by code examples. Two distinct kinds of examples are provided:

  • noncompliant examples demonstrating language constructs that have weaknesses with potentially exploitable security implications; such examples are expected to elicit a diagnostic from a conforming analyzer for the affected language construct; and
  • compliant examples are expected not to elicit a diagnostic.

ISO/IEC TS 18661-1:2014

Information technology - Programming languages, their environments, and system software interfaces - Floating-point extensions for C - Part 1: Binary floating-point arithmetic

ISO/IEC TS 18661-1:2014 extends programming language C to support binary floating-point arithmetic conforming to ISO/IEC/IEEE 60559:2011. It covers all requirements of IEC 60559 as they pertain to C floating types that use IEC 60559 binary formats.

ISO/IEC TS 18661-1:2014 does not cover decimal floating-point arithmetic, nor does it cover most optional features of IEC 60559.

ISO/IEC TS 18661-1:2014 is primarily an update to IEC 9899:2011 (C11), normative Annex F (IEC 60559 floating-point arithmetic). However, it proposes that the new interfaces that are suitable for general implementations be added in the Library clauses of C11. Also it includes a few auxiliary changes in C11 where the specification is problematic for IEC 60559 support.

ISO/IEC TS 18661-2:2015

Information Technology - Programming languages, their environments, and system software interfaces - Floating-point extensions for C - Part 2: Decimal floating-point arithmetic

ISO/IEC/TS 18661-2:2015 extends programming language C as specified in ISO/IEC 9899:2011, (C11) with changes specified in ISO/IEC/TS 18661-1, to support decimal floating-point arithmetic conforming to ISO/IEC/IEEE 60559:2011. It covers all requirements of IEC 60559 as they pertain to C decimal floating types.

ISO/IEC/TS 18661-2:2015 does not cover binary floating-point arithmetic (which is covered in ISO/IEC/TS 18661-1), nor does it cover most optional features of IEC 60559.

ISO/IEC TS 18661-3:2015

Information Technology - Programming languages, their environments, and system software interfaces - Floating-point extensions for C - Part 3: Interchange and extended types

ISO/IEC TS 18661-3:2015 extends programming language C to include types with the arithmetic interchange and extended floating-¡‐point formats specified in ISO/IEC/IEEE 60559:2011, and to include functions that support the non-¡‐arithmetic interchange formats in that standard.

ISO/IEC TS 18661-5:2016

Information Technology - Programming languages, their environments, and system software interfaces - Floating-point extensions for C - Part 5: Supplementary attributes

ISO/IEC TS 18661-5:2016 extends programming language C to include support for attributes specified and recommended in ISO/IEC/IEEE 60559:2011.

ISO/IEC 24747:2009

Information technology - Programming languages, their environments and system software interfaces - Extensions to the C Library to support mathematical special functions

ISO/IEC 24747:2009 defines extensions to the C Standard Library that is defined in the International Standard for the C programming language (ISO/IEC 9899). Unless otherwise specified, the whole of the C Standard Library is included in ISO/IEC 24747:2009 by reference.

ISO/IEC 24747:2009 defines library extensions to the C Standard Library to support Mathematical Special functions to be added to <math.h> and <tgmath.h>.

ISO/IEC TR 24731-1:2007

Information technology - Programming languages, their environments and system software interfaces - Extensions to the C library - Part 1: Bounds-checking interfaces

ISO/IEC TR 24731-1:2007 provides alternative functions for the C Library (as defined in ISO/IEC 9899:1999) that promote safer, more secure programming. The functions verify that output buffers are large enough for the intended result, and return a failure indicator if they are not. Optionally, failing functions call a "runtime-constraint handler" to report the error. Data is never written past the end of an array. All string results are null terminated. In addition, the functions in ISO/IEC TR 24731-1:2007 are re-entrant: they never return pointers to static objects owned by the function.

ISO/IEC TR 24731-1:2007 also contains functions that address insecurities with the C input-output facilities.

ISO/IEC TR 24731-2:2010

Information technology - Programming languages, their environments and system software interfaces - Extensions to the C library - Part 2: Dynamic Allocation Functions

ISO/IEC TR 24731 provides alternative functions for the C library that promote safer, more secure programming. ISO/IEC TR 24731-1 provides simple replacement functions for the library functions of ISO/IEC 9899:1999 that provide bounds checking. Those functions can be used as simple replacements for the original library functions in legacy code. ISO/IEC TR 24731-2:2010 presents replacements for many of these functions that use dynamically allocated memory to ensure that buffer overflow does not occur.

ISO/IEC TR 24732:2009

Information technology - Programming languages, their environments and system software interfaces - Extension for the programming language C to support decimal floating-point arithmetic

ISO/IEC TR 24732:2009 specifies an extension to the programming language C, specified by the International Standard ISO/IEC 9899:1999. The extension provides support for decimal floating-point arithmetic that is intended to be consistent with the specification in IEEE 754-2008. Any conflict between the requirements described here and that specification is unintentional. ISO/IEC TR 24732:2009 defers to IEEE 754-2008.

The binary floating-point arithmetic as specified in IEEE 754-2008 is not considered in ISO/IEC TR 24732:2009.