Differences between microlib and the default C library
There are a number of differences between microlib and the default C library.
The main differences are:
- Microlib is not compliant with the ISO C library standard. Some ISO features are not supported and others have less functionality.
- Microlib is not compliant with the IEEE 754 standard for binary floating-point arithmetic.
- Microlib is highly optimized for small code size.
- Locales are not configurable. The default C locale is the only one available.
main()must not be declared to take arguments and must not return. In
argvparameters are undefined and cannot be used to access command-line arguments.
- Microlib provides limited support for C99 functions. Specifically,
microlib does not support the following C99 functions:
feclearexcept fegetenv fegetexceptflag fegetround feholdexcept feraiseexcept fesetenv fesetexceptflag fesetround fetestexcept feupdateenv
- Wide characters in general:
btowc fgetwc fgetws fputwc fputws fwide fwprintf fwscanf getwc getwchar iswalnum iswalpha iswblank iswcntrl iswctype iswdigit iswgraph iswlower iswprint iswpunct iswspace iswupper iswxdigit mblen mbrlen mbsinit mbsrtowcs mbstowcs mbtowc putwc putwchar swprintf swscanf towctrans towlower towupper ungetwc vfwprintf vfwscanf vswprintf vswscanf vwprintf vwscanf wcscat wcschr wcscmp wcscoll wcscspn wcsftime wcslen wcsncat wcsncmp wcsncpy wcspbrk wcsrchr wcsrtombs wcsspn wcsstr wcstod wcstof wcstoimax wcstok wcstol wcstold wcstoll wcstombs wcstoul wcstoull wcstoumax wcsxfrm wctob wctomb wctrans wctype wmemchr wmemcmp wmemcpy wmemmove wmemset wprintf wscanf
ilogb ilogbf ilogbl lgamma lgammaf lgammal logb logbf logbl nextafter nextafterf nextafterl nexttoward nexttowardf nexttowardl
- Functions relating to program startup and shutdown and other OS
_Exit atexit exit system time
- Microlib does not support C++.
- Microlib does not support operating system functions.
- Microlib does not support position-independent code.
- Microlib does not provide mutex locks to guard against code that is not thread safe.
- Microlib does not support wide characters or multibyte strings.
- Microlib does not support selectable one or two region memory models as the standard library (stdlib) does. Microlib provides only the two region memory model with separate stack and heap regions.
- Microlib does not support the bit-aligned memory functions
- Microlib can be used only with the armclang command-line option
- The level of ANSI C
stdiosupport that is provided can be controlled with
__asm(".global __use_smaller_memcpy\n\t")selects a smaller, but slower, version of
setbuf()always fail because all streams are unbuffered.
0because the error and
EOFindicators are not supported.
- Microlib has no support in AArch64 state.
When compiling a program that uses the microlib character classification functions in ctype.h, if the variable to classify does not represent an ASCII character, the behavior of these functions is undefined.