[cfe-dev] warning request: partial array initialisation

Sebastian Redl sebastian.redl at getdesigned.at
Tue Jun 19 15:17:26 PDT 2012


On 19.06.2012, at 18:49, Chandler Carruth wrote:

> On Tue, Jun 19, 2012 at 1:20 AM, Jay Foad <jay.foad at gmail.com> wrote:
> Hi,
> 
> I'd really like to be able to get a warning when "almost all" elements
> of an array are initialised:
> 
>  #define N 8
>  const int a[N] = { 3, 1, 4, 1, 5, 9, 2 };
>  warning: some but not all array elements initialised
> 
> At least in C++, this warning wouldn't make a lot of sense because all of the array elements *are* initialized. [dcl.init.aggr] 8.5.1/7: "If there are fewer initializers in the list than there are members in the aggregate, then each member not explicitly initialized shall be value-initialized (8.5)."
> 
> We would have a problem with lots of code which intended to initialized the first few elements, and zero out the rest.
> 
> Maybe someone has clever ideas about how to syntactically differentiate between these two use cases?

const int a[] = { 3, 1, 4, 1, 5, 9, 2 };
static_assert(arraysize(a) == N, "N was increased, you need more initializers");

Sebastian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120620/7b3421b0/attachment.html>


More information about the cfe-dev mailing list