[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 04/14] qlit: remove compound literals
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH v2 04/14] qlit: remove compound literals |
Date: |
Wed, 30 Aug 2017 08:11:51 -0400 (EDT) |
Hi
----- Original Message -----
> Marc-André Lureau <address@hidden> writes:
>
> > They are not considered constant expressions in C, producing an error
> > when compiling a const QLit.
>
> A const QLit? Do you mean a non-const one?
Really a const QLitObject:
const QLitObject qmp_schema_qlit = QLIT_QLIST(((QLitObject[]) {
QLIT_QNULL,
{}
}));
qmp-introspect.c:17:63: error: initializer element is not constant
const QLitObject qmp_schema_qlit = QLIT_QLIST(((QLitObject[]) {
^
Removing the "compound literals" fixes this error.
We may want to include it in the commit message, but I think it lacks a bit of
"C standard" explanation. I think it is something like "compound literals" are
not const. But then why does it work with (QLitObject[]) ? :)
>
> > Signed-off-by: Marc-André Lureau <address@hidden>
> > ---
> > include/qapi/qmp/qlit.h | 8 ++++----
> > 1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/include/qapi/qmp/qlit.h b/include/qapi/qmp/qlit.h
> > index a4ad91321b..f1d6eed317 100644
> > --- a/include/qapi/qmp/qlit.h
> > +++ b/include/qapi/qmp/qlit.h
> > @@ -36,13 +36,13 @@ struct QLitDictEntry {
> > };
> >
> > #define QLIT_QNUM(val) \
> > - (QLitObject){.type = QTYPE_QNUM, .value.qnum = (val)}
> > + { .type = QTYPE_QNUM, .value.qnum = (val) }
> > #define QLIT_QSTR(val) \
> > - (QLitObject){.type = QTYPE_QSTRING, .value.qstr = (val)}
> > + { .type = QTYPE_QSTRING, .value.qstr = (val) }
> > #define QLIT_QDICT(val) \
> > - (QLitObject){.type = QTYPE_QDICT, .value.qdict = (val)}
> > + { .type = QTYPE_QDICT, .value.qdict = (val) }
> > #define QLIT_QLIST(val) \
> > - (QLitObject){.type = QTYPE_QLIST, .value.qlist = (val)}
> > + { .type = QTYPE_QLIST, .value.qlist = (val) }
> >
> > int compare_litqobj_to_qobj(QLitObject *lhs, QObject *rhs);
>
- [Qemu-devel] [PATCH v2 01/14] qdict: add qdict_put_null() helper, (continued)
- [Qemu-devel] [PATCH v2 02/14] qlit: move qlit from check-qjson to qobject/, Marc-André Lureau, 2017/08/25
- [Qemu-devel] [PATCH v2 03/14] qlit: use QLit prefix consistently, Marc-André Lureau, 2017/08/25
- [Qemu-devel] [PATCH v2 04/14] qlit: remove compound literals, Marc-André Lureau, 2017/08/25
- Re: [Qemu-devel] [PATCH v2 04/14] qlit: remove compound literals, Markus Armbruster, 2017/08/30
- Re: [Qemu-devel] [PATCH v2 04/14] qlit: remove compound literals,
Marc-André Lureau <=
- Re: [Qemu-devel] [PATCH v2 04/14] qlit: remove compound literals, Markus Armbruster, 2017/08/30
- Re: [Qemu-devel] [PATCH v2 04/14] qlit: remove compound literals, Marc-André Lureau, 2017/08/30
- Re: [Qemu-devel] [PATCH v2 04/14] qlit: remove compound literals, Markus Armbruster, 2017/08/31
- Re: [Qemu-devel] [PATCH v2 04/14] qlit: remove compound literals, Marc-André Lureau, 2017/08/31
- Re: [Qemu-devel] [PATCH v2 04/14] qlit: remove compound literals, Markus Armbruster, 2017/08/31
- Re: [Qemu-devel] [PATCH v2 04/14] qlit: remove compound literals, Laszlo Ersek, 2017/08/31
[Qemu-devel] [PATCH v2 05/14] qlit: rename compare_litqobj_to_qobj() to qlit_equal_qobject(), Marc-André Lureau, 2017/08/25
[Qemu-devel] [PATCH v2 06/14] qlit: make qlit_equal_qobject return a bool, Marc-André Lureau, 2017/08/25
[Qemu-devel] [PATCH v2 07/14] qlit: make qlit_equal_qobject() take const arguments, Marc-André Lureau, 2017/08/25
[Qemu-devel] [PATCH v2 08/14] qlit: add QLIT_QNULL and QLIT_BOOL, Marc-André Lureau, 2017/08/25