[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:
-I.../include/FLAC
#include <metadata.h>
because of the potential for conflict with other headers. The code
should be using this style everywhere:
-I.../include
#include <FLAC/metadata.h>
Then there is no problem with
#include <FLAC/assert.h>
More information about the flac-dev
mailing list