File: README.md

package info (click to toggle)
haskell-language-c 0.9.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 676 kB
  • sloc: haskell: 6,750; yacc: 1,907; makefile: 2
file content (43 lines) | stat: -rw-r--r-- 1,287 bytes parent folder | download
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`.