The Citrine Citadel


Cdecl99

Cdecl99 is a tool to help construct or understand complicated C declarations. Inspired by the venerable cdecl, which predates C’s standardization in 1989, cdecl99 implements more or less the same concept but for modern C.

Unlike the original cdecl, cdecl99 supports all relevant C99 keywords, has no undue restrictions on identifiers, understands features such as complex types, variadic functions and named parameters, and also has the ability to parse “plain” type names (which do not declare an identifier).

At this time there is no support for new declaration syntax introduced in C11, including atomic types, _Alignas, _Thread_local or _Noreturn specifers.

The package includes both an executable program (cdecl99) and a library (libcdecl) which can be used by other programs to provide cdecl-like functionality.

Obtaining cdecl99

There are presently no released versions of cdecl99. The development sources may be browsed online or cloned directly using git, e.g.,

git clone https://git.draconx.ca/cdecl99.git

Dependencies

Cdecl99 is written in C, so a working C compiler is required. All external library dependencies are optional and provide additional functionality.

The GNU readline library is used to provide interactive line-editing and history functionality.

The GNU libintl library (included with the GNU C library) is used to support localized program messages. However, the core functionality of translating C declarations into pseudo-English is not localizable since the output is intended to be machine-readable.

Building from the development sources may require additional build tools.

License

Cdecl99 is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License or (at your option) any later version.