init.c revision 1.2
11.2Srillig/*	$NetBSD: init.c,v 1.2 2021/12/17 01:00:50 rillig Exp $	*/
21.1Srillig# 3 "init.c"
31.1Srillig
41.1Srillig/*
51.1Srillig * Tests for initialization.
61.1Srillig *
71.1Srillig * C99 6.7.8
81.1Srillig */
91.1Srillig
101.1Srillig/*
111.1Srillig * C99 does not allow empty initializer braces syntactically.
121.1Srillig * Lint allows this syntactically, it just complains if the resulting
131.1Srillig * object is empty.
141.1Srillig */
151.1Srillig/* expect+1: error: empty array declaration: empty_array_with_initializer [190] */
161.1Srilligdouble empty_array_with_initializer[] = {};
171.1Srilligdouble array_with_empty_initializer[3] = {};
181.1Srillig
191.1Srillig/*
201.1Srillig * C99 does not allow empty initializer braces syntactically.
211.1Srillig */
221.1Srilligstruct {
231.1Srillig	int member;
241.1Srillig} empty_struct_initializer = {};
251.2Srillig
261.2Srillig
271.2Srilligtypedef struct {
281.2Srillig	const char *key;
291.2Srillig	int n;
301.2Srillig} histogram_entry;
311.2Srillig
321.2Srillig/*
331.2Srillig * The C standards allow omitting braces around the structural levels.  For
341.2Srillig * human readers, it is usually clearer to include them.
351.2Srillig *
361.2Srillig * Seen in external/ibm-public/postfix/dist/src/util/dict.c(624).
371.2Srillig */
381.2Srilligconst histogram_entry hgr[] = {
391.2Srillig	/* expect+1: error: cannot initialize 'struct typedef histogram_entry' from 'pointer to char' [185] */
401.2Srillig	"odd", 5,
411.2Srillig	"even", 5,
421.2Srillig};
43