ctype

ctype contains two sets of implementations for all functions. The standard is a set of macros which translate into lookup table accesses.

This table uses 257 bytes of memory, so the library provides an implementation using real functions. These functions are accessible only when the macros are undefined. After #undef isupper, isupper translates into a call to function isupper(). Without undef, the corresponding macro replaces isupper.

Using the functions instead of the macros saves RAM and code size, at the expense of some additional function call overhead.