Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
unifdef - selectively remove C preprocessor conditionals

Written by Tony Finch <> -

The unifdef utility selectively processes conditional C preprocessor
#if and #ifdef directives. It removes from a file both the directives
and the additional text that they delimit, while otherwise leaving the
file alone.

Please see the INSTALL file for installation instructions.

Pre-formatted documentation can be found in unifdef.txt

You can download the latest release tar and zip files from:

Note: GitHub's "releases" are incomplete and broken, but I am not
able to redrect them to the right place.

You can clone the development repository using:
	git clone

I also maintain a copy at
(Warning: GitHub's zip download is incomplete and unusable.)

Please send bug reports and patches to me via email to the
address above. Unless you state otherwise, I will assume that
any contributions are under the two-clause BSD licence. See
the COPYING file for details.

Thanks to the following people for their contributions:

Bob Proulx <>
 - test suite

Jonathan Nieder <>
 - bug fixes, improved unifdefall

Anders H Kaseorg <>
 - bug fixes and other improvements

Ruediger Meier <>
 - build and portability cleanups

Ben Hutchings at Solarflare Communications
 - lenient evaluation of && and ||

Steve Underwood <>
 - read #define and #undef directives from a file

Brian Ginsbach <>
 - improved expression evaluator

Other contributions are listed in the Changelog.

- end -