Customer Service:
Mon - Fri: 8:30 am - 6 pm EST

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 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.


ANSI Logo

As the voice of the U.S. standards and conformity assessment system, the American National Standards Institute (ANSI) empowers its members and constituents to strengthen the U.S. marketplace position in the global economy while helping to assure the safety and health of consumers and the protection of the environment.

CUSTOMER SERVICE
NEW YORK OFFICE
ANSI HEADQUARTERS