[flac-dev] [Flac-dev] pkg-config output and <FLAC/assert.h>

Josh Coalson xflac at yahoo.com
Wed Apr 25 17:19:49 PDT 2012

> From: Paul Davis <paul at linuxaudiosystems.com>
> To: flac-dev at xiph.org
> Cc: 
> Sent: Friday, March 25, 2011 5:39 AM
> Subject: Re: [Flac-dev] pkg-config output and <FLAC/assert.h>
> On Fri, Mar 25, 2011 at 5:32 AM, Erik de Castro Lopo
> <mle+la at mega-nerd.com> wrote:
>>  Hi,
>>  FLAC helpfully provides a flac.pc file. Unfortunately there is a
>>  nasty interaction between that file and system header files.
>>  If ones installs flac and relies on pkg-config to find the CFLAGS
>>  one woulf get CFLAGS value of "-I${includedir}/FLAC" which 
> suggests
>>  that FLAC header files like <metadata.h> should be included as:
>>     #include <metadata.h>
>>  However, FLAC also ships an <assert.h> header file. If one writes
>>  code that wants needs both the Standard C <assert.h> and the FLAC
>>  header files, we run into a problem, the C compiler finds FLAC's
>>  <assert.h> instead of the Standard C version.
>>  I believe the correct solution to this problem is the change the
>>  Cflag value in flac.pc to "-I${includedir}" and then encourage
>>  people to use:
>>     #include <FLAC/metadata.h>
>>     #include <FLAC/assert.h>
>>     #include <assert.h>
>>  which will no longer conflict.
>>  Opinions?
> i recall raising this as an issue about 18 months ago. i certainly
> feel that the include style that flac uses now is simply wrong, and
> that your suggestion above (which matches the one i made) is
> substantially preferable.

I didn't follow, which style is wrong?  I never liked lazy search paths like:

#include <metadata.h>

because of the potential for conflict with other headers.  The code
should be using this style everywhere:

#include <FLAC/metadata.h>

Then there is no problem with
#include <FLAC/assert.h>

More information about the flac-dev mailing list