c99 1.3 KB

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