P99 - Preprocessor macros and functions for C99

P99 - Preprocessor macros and functions for C99

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.

[ICO]NameLast modifiedSizeDescription

[DIR]c99-conformance/12-Feb-2013 10:53 - C99 conformance tests
[DIR]defects-and-improvements/08-Feb-2013 01:20 - C11 defect reports and feature requests
[DIR]p99-html/21-Mar-2014 17:49 - P99 code documentation
[DIR]versions/21-Mar-2014 17:53 - previous versions
[   ]p99-html.tgz21-Mar-2014 17:50 21MP99 code documentation
[   ]p99-html.zip21-Mar-2014 17:51 24MP99 code documentation
[   ]p99-refman.pdf21-Mar-2014 17:50 9.0Mreference manual
[   ]p99.tgz21-Mar-2014 17:49 342Kcurrent version
[   ]p99.zip21-Mar-2014 17:49 401Kcurrent 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


Jens Gustedt