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.
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 bear 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:
|Linux||ubuntu 9.04/Gnu LibC||x86_64||gcc 4.1 - 4.2||work arround for
|gcc 4.3 - 4.7|
|clang 2.8||VLA crashes the compiler|
|clang 2.9||minor incompatibility for
|clang 3.0||work around from some compound literals|
|opencc 4.2||work arround for
|icc 12.0.0||work arround for
|TinyC||preprocessor not conforming|
|i686||gcc 4.3 - 4.6|
|ubuntu 9.04/musl||x86_64||gcc 4.4|
|maemo||arm||gcc 4.2||work arround for
|redhat 5.0||ia64||icc 4.1.2||work arround for
|BSD||OS X||x86_64||gcc 4.2.1||work arround for
|FreeBSD||7.2-RELEASE-p7||amd64||gcc 4.2.1||work arround for
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