2 |
- |
1 |
C99 changes vs C89
|
|
|
2 |
http://home.tiscalinet.ch/t_wolf/tw/c/c9x_changes.html
|
|
|
3 |
|
|
|
4 |
(Numbers are from the web page list.)
|
|
|
5 |
|
|
|
6 |
Not done (yet?):
|
|
|
7 |
9, 19. Hexdecimal floating point constants.
|
|
|
8 |
11. _Complex, _Imaginary, _Bool
|
|
|
9 |
14. Variable arrays in parameter lists.
|
|
|
10 |
33. Variable-length arrays
|
|
|
11 |
34. goto restrictions for variable-length arrows
|
|
|
12 |
18. Notation for universal characters \uXXXX
|
|
|
13 |
25. Division and mod truncate toward zero.
|
|
|
14 |
26. _Bool, float _Complex, double _Complex, long double _Complex
|
|
|
15 |
|
|
|
16 |
Done:
|
|
|
17 |
7. __VA_ARGS__
|
|
|
18 |
11, 30, 31, 32. restrict, inline
|
|
|
19 |
12. Allow declarations anywhere.
|
|
|
20 |
15. for loop declarations
|
|
|
21 |
28. structs ending in incomplete type.
|
|
|
22 |
|
|
|
23 |
Unneeded (already had):
|
|
|
24 |
1. Translation limits
|
|
|
25 |
6. Empty macro arguments allowed.
|
|
|
26 |
8. #line limit
|
|
|
27 |
10 // comments
|
|
|
28 |
16. (Type){initializer list} compound literals
|
|
|
29 |
17. Named initializers
|
|
|
30 |
20. LL suffix for long long constants
|
|
|
31 |
21. IEEE 754 floating-point arithmetic
|
|
|
32 |
22. Long long type, 64 bits wide.
|
|
|
33 |
24. Initializers for auto aggregates can be non-constants.
|
|
|
34 |
26. long long int, unsigned long long int, signed long long int
|
|
|
35 |
27. require at least one type specifier in a declaration
|
|
|
36 |
29. Idempotent type qualifiers.
|
|
|
37 |
|
|
|
38 |
Unwanted:
|
|
|
39 |
2. #pragma stdc
|
|
|
40 |
3. _Pragma
|
|
|
41 |
4. __STDC_VERSION__
|
|
|
42 |
5. __STDC_IEC_559__, __STDC_IEC_559_COMPLEX__,
|
|
|
43 |
__STDC_ISO_10646__
|
|
|
44 |
13. Digraph tokens
|
|
|
45 |
23. __func__ identifier
|
|
|
46 |
|