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 34 35 36 37 38 39 40 41 42 43
|
# Language.C
Language.C is a parser and pretty-printer framework for C11 and the extensions of gcc.
See http://visq.github.io/language-c/
## C Language Compatibility
Currently unsupported C11 constructs:
- static assertion 6.7.10 (`_Static_assert`)
- generic selection 6.5.1.1 (`_Generic`)
- `_Atomic`, `_Alignas`, `_Thread_local`
- Universal character names
Currently unsupported GNU C extensions:
- `__auto_type`
- `__builtin_offsetof`
`char a[__builtin_offsetof (struct S, sa->f)`
- `_Decimal32`
- Extended assembler
`__asm__ __volatile__ ("" : : : )`;
`__asm__ goto ("" : : : : label)`;
- `__attribute__((packed))`: types featuring this attribute may have an
incorrect size or alignment calculated.
### IEC 60559:
Since `language-c-0.8`, extended floating point types are supported (gcc 7 feature). Package maintainers may decide to disable these types (flag `iecFpExtension`) to work around the fact that the `_Float128` type is redefined by glibc >= 2.26 if gcc < 7 is used for preprocessing:
```
/* The type _Float128 exists only since GCC 7.0. */
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
typedef __float128 _Float128;
# endif
```
## Examples
A couple of small examples are available in `examples`.
## Testing
See `test/README`.
|