1.23.1 How the ARM C library fulfills ISO C specification requirements

The ISO specification leaves some features to implementors, but requires that implementation choices be documented.

The implementation of the generic ARM C library in this respect is as follows:

  • The macro NULL expands to the integer constant 0.

  • If a program redefines a reserved external identifier, an error might occur when the program is linked with the standard libraries. If it is not linked with standard libraries, no error is diagnosed.

  • The __aeabi_assert() function prints information on the failing diagnostic on stderr and then calls the abort() function:

    *** assertion failed: expression, file name, line number


    The behavior of the assert macro depends on the conditions in operation at the most recent occurrence of #include <assert.h>. See 1.8.6 Program exit and the assert macro for more information about the behavior of the assert macro.
  • The following functions test for character values in the range EOF (-1) to 255 inclusive:

    • isalnum()

    • isalpha()

    • iscntrl()

    • islower()

    • isprint()

    • isupper()

    • ispunct()

  • The fully POSIX-compliant functions remquo(), remquof() and remquol() return the remainder of the division of x by y and store the quotient of the division in the pointer *quo. An implementation-defined integer value defines the number of bits of the quotient that are stored. In the ARM C library, this value is set to 4.

  • C99 behavior, with respect to mathlib error handling, is enabled by default.

Non-ConfidentialPDF file icon PDF versionARM DUI0475M
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.