Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 01 Jan 2009 10:12:36 +0100
From:      Christoph Mallon <christoph.mallon@gmx.de>
To:        Joerg Sonnenberger <joerg@britannica.bec.de>
Cc:        svn-src-all@freebsd.org
Subject:   Re: svn commit: r186529 - head/sys/dev/acpi_support
Message-ID:  <495C8904.8090008@gmx.de>
In-Reply-To: <20081228210916.GA13945@britannica.bec.de>
References:  <200812272048.mBRKmBKo082102@svn.freebsd.org>	<20081228045055.GA81182@citylink.fud.org.nz>	<20081228223039.cf28e3e2.stas@FreeBSD.org>	<4957E8F5.90202@andric.com> <20081228210916.GA13945@britannica.bec.de>

next in thread | previous in thread | raw e-mail | index | archive | help
Joerg Sonnenberger schrieb:
> On Sun, Dec 28, 2008 at 10:00:37PM +0100, Dimitry Andric wrote:
>> On 2008-12-28 20:30, Stanislav Sedov wrote:
>>>>> -	ACPI_OBJECT		acpiarg[0];
>>>>> +	ACPI_OBJECT		acpiarg[1];
>>> I wonder how does gcc allowed this. It emits warnings only in
>>> pedantic mode which we cannot use to compile kernel with.
>> Zero-sized arrays are non-standard, but have been allowed by gcc (and
>> many other compilers) since a long time, so it is logical that it
>> doesn't warn about it by default.
> 
> Having no size at all would be standard compliant, e.g. acpiarg[[];

No, it wouldn't be standard compliant. You are confusing this with a 
flexible array member as last entry of a struct declaration (C99 
§6.7.2.1:16). As an (old) extension GCC accepts [0] as flexible array 
member, too.
The declaration here is a declaration of an array with automatic storage 
duration and no linkage. Having nothing in the [] (and no initialiser) 
would make the array an incomplete type (C99 §6.7.5.2:4), which is not 
valid for a local variable (C99 §6.2.2:6 and §6.7:7). Also 0 as size 
expression clearly violates the standard: "If the expression is a 
constant expression, it shall have a value greater than zero." (C99 
§6.7.5.2:1).
A local array with length 0 has no practical purpose either.

Regards
	Christoph



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?495C8904.8090008>