NOTES-ANSI.md 835 B

Notes on ANSI C

When building for pure ANSI C (C89/C90), you must configure with at least the following configuration settings:

  • no-asm

    There are cases of asm() calls in our C source, which isn't supported in pure ANSI C.

  • no-secure-memory

    The secure memory calls aren't supported with ANSI C.

  • -D_XOPEN_SOURCE=1

    This macro enables the use of the following types, functions and global variables:

    • timezone
  • -D_POSIX_C_SOURCE=200809L

    This macro enables the use of the following types, functions and global variables:

    • ssize_t
    • strdup()

It's arguable that with gcc and clang, all of these issues are removed when defining the macro _DEFAULT_SOURCE. However, that effectively sets the C language level to C99, which isn't ANSI C.