NOTES-ANSI.md revision 1.1 1 Notes on ANSI C
2 ===============
3
4 When building for pure ANSI C (C89/C90), you must configure with at least
5 the following configuration settings:
6
7 - `no-asm`
8
9 There are cases of `asm()` calls in our C source, which isn't supported
10 in pure ANSI C.
11
12 - `no-secure-memory`
13
14 The secure memory calls aren't supported with ANSI C.
15
16 - `-D_XOPEN_SOURCE=1`
17
18 This macro enables the use of the following types, functions and global
19 variables:
20
21 - `timezone`
22
23 - `-D_POSIX_C_SOURCE=200809L`
24
25 This macro enables the use of the following types, functions and global
26 variables:
27
28 - `ssize_t`
29 - `strdup()`
30
31 It's arguable that with gcc and clang, all of these issues are removed when
32 defining the macro `_DEFAULT_SOURCE`. However, that effectively sets the C
33 language level to C99, which isn't ANSI C.
34