summaryrefslogtreecommitdiffstats
path: root/NOTES-ANSI.md
blob: feeb5434855748507784da736117754568ba15c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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.