![]() |
P99 is a suite of macro and function definitions that ease the programming in modern C, aka C99. By using new tools from C99 we implement default arguments for functions, scope bound resource management, transparent allocation and initialization, ...
By using special features of some compilers and operating systems, we also are able to provide an emulation of a large part of the new C standard, C11.
P99 heavily depends on a decent support for C99 of compilers. We have set up a test program that may be used as a first indication if a compiler is compatible with that. Please see the directory c99-conformance for some results of such tests.
If you are new to P99 you might want to have a look at the first chapters of the Reference Manual or read the online documentation.
![]() | Name | Last modified | Size | Description |
---|---|---|---|---|
![]() | c99-conformance/ | 2017-06-29 15:42 | - | C99 conformance tests |
![]() | defects-and-improvements/ | 2014-12-13 17:04 | - | C11 defect reports and feature requests |
![]() | p99-html/ | 2017-06-29 15:38 | - | P99 code documentation |
![]() | versions/ | 2017-06-29 15:42 | - | previous versions |
![]() | p99-html.tgz | 2017-06-29 15:41 | 23M | P99 code documentation |
![]() | p99-html.zip | 2017-06-29 15:41 | 25M | P99 code documentation |
![]() | p99-refman.pdf | 2017-06-29 15:41 | 3.8M | reference manual |
![]() | p99.tgz | 2017-06-29 15:38 | 355K | current version |
![]() | p99.zip | 2017-06-29 15:38 | 419K | current version |
The code of P99 should be usable and hopefully also useful. In contrast to that P99 as a project is only in its boot phase, so bare with me if you are missing documentation, examples, and any other kind of resources. The best to improve things is to let me know, there is my mailing address on the bottom of this page and there is now also a help forum. Many information will currently be made public via my blog: Jens Gustedt's Blog.
But there is also some project infrastructure that is set up on the INRIA gforge site. In particular you may have anonymous access to the git repository, there.
P99 has been tested on combinations of the following:
OS | variant | processor | compiler | remarks |
---|---|---|---|---|
Linux | ubuntu 9.04/Gnu LibC | x86_64 | gcc 4.1 - 4.2 | work arround for inline |
gcc 4.3 - 4.7 | ||||
clang 2.8 | VLA crashes the compiler | |||
clang 2.9 | minor incompatibility for
## token |
|||
clang 3.0 | work around from some compound literals | |||
clang 3.2 | has _Generic |
|||
opencc 4.2 | work arround for inline |
|||
icc 12.0.0 | work arround for inline |
|||
TinyC | preprocessor not conforming | |||
pcc | compiler crashes | |||
i686 | gcc 4.3 - 4.6 | |||
ubuntu 9.04/musl | x86_64 | gcc 4.4 | ||
maemo | arm | gcc 4.2 | work arround for inline |
|
redhat 5.0 | ia64 | icc 4.1.2 | work arround for inline |
|
BSD | OS X | x86_64 | gcc 4.2.1 | work arround for inline |
FreeBSD | 7.2-RELEASE-p7 | amd64 | gcc 4.2.1 | work arround for inline |
P99 is automatically tested on
the Continuous Integration
platform of Inria after all git version changes. For the
moment this includes two processors in the Intel family, i386
and amd64, gcc different version and clang, on Ubuntu Linux with
glib or with musl. The current status
is