[FFmpeg-devel] [PATCH] Current SVN doesn't build with gcc 4.2.x

Måns Rullgård mans
Mon Jul 2 20:19:05 CEST 2007

Bernhard Rosenkraenzer <bero at arklinux.org> writes:

> On Monday 02 July 2007, Bernhard Rosenkraenzer wrote:
>> On Monday 02 July 2007, Uoti Urpala wrote:
>> > > ffmpeg.c:118: error: initializer element is not constant.
>> >
>> > I see no such error on this machine.
>> >
>> > gcc-4.2 (GCC) 4.2.1 20070627 (prerelease) (Debian 4.2-20070627-1)
>> Happens here with
>> gcc (GCC) 4.2.1 20070613 (prerelease)
>> So either it was fixed between 20070613 and 20070627 or Debian is applying
>> a patch...
> Or it's caused by compiler flags.
> I just talked to a gcc guy, this happens if gcc is run in C99 mode
> (-std=*99, even gnu99), and not if it's run in one of the
> traditional modes.
> Since gnu99 will be the default for gcc 4.3, the code should probably be 
> fixed.

The code is not valid C89.  I may be wrong, but I believe the C99
standard does indeed not allow that construct.

Writing (AVRational){1,25} in C99 creates an unnamed AVRational
initialised to {1,25}.  Since this unnamed object is not semantically
constant, it cannot be used as a constant initialiser.  It would be
similar to writing something like this:

static int a = 5;
static int b = a;

The above is certainly not allowed.

All those gcc extensions really ought not be enabled by default...
But that's another rant.

M?ns Rullg?rd
mans at mansr.com

More information about the ffmpeg-devel mailing list