@hackage language-c0.9.0.2

Analysis and generation of C code

= 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/

== Build and Install ==

cabal install

-- or --

runhaskell Setup.hs configure FLAGS runhaskell Setup.hs build runhaskell Setup.hs install

Provide the set of flags passing --flags="" to configure.

== Compatibility ==

Tested with GHC 8.0, 8.2, 8.4, 8.6, 8.8 and 8.10

It is recommended to use the most recent platform release: http://hackage.haskell.org/platform/.

== 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

== Sources ==

see src/README

== Examples ==

A couple of small examples are available in /examples

== Testing ==

A couple of regression tests can be run via

cd test/harness; make

For more tests, see test/README.