[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 7/7] qobject atomics osdep: Make a few macros more hygienic
- To: Cédric Le Goater <clg@xxxxxxxx>, Eric Blake <eblake@xxxxxxxxxx>, Markus Armbruster <armbru@xxxxxxxxxx>
- From: Philippe Mathieu-Daudé <philmd@xxxxxxxxxx>
- Date: Fri, 1 Sep 2023 16:31:12 +0200
- Cc: qemu-devel@xxxxxxxxxx, kwolf@xxxxxxxxxx, hreitz@xxxxxxxxxx, vsementsov@xxxxxxxxxxxxxx, jsnow@xxxxxxxxxx, idryomov@xxxxxxxxx, pl@xxxxxxx, sw@xxxxxxxxxxx, sstabellini@xxxxxxxxxx, anthony.perard@xxxxxxxxxx, paul@xxxxxxx, pbonzini@xxxxxxxxxx, marcandre.lureau@xxxxxxxxxx, berrange@xxxxxxxxxx, thuth@xxxxxxxxxx, stefanha@xxxxxxxxxx, fam@xxxxxxxxxx, quintela@xxxxxxxxxx, peterx@xxxxxxxxxx, leobras@xxxxxxxxxx, kraxel@xxxxxxxxxx, qemu-block@xxxxxxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxxx, alex.bennee@xxxxxxxxxx, peter.maydell@xxxxxxxxxx
- Delivery-date: Fri, 01 Sep 2023 14:31:44 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On 1/9/23 14:59, Cédric Le Goater wrote:
On 8/31/23 16:30, Eric Blake wrote:
On Thu, Aug 31, 2023 at 03:25:46PM +0200, Markus Armbruster wrote:
[This paragraph written last: Bear with my stream of consciousness
review below, where I end up duplicating some of the conslusions you
reached before the point where I saw where the patch was headed]
Variables declared in macros can shadow other variables. Much of the
time, this is harmless, e.g.:
#define
_FDT(exp) \
do
{ \
int ret =
(exp); \
if (ret < 0)
{ \
error_report("error creating device tree: %s: %s", \
#exp,
fdt_strerror(ret)); \
exit(1); \
} \
} while (0)
Which is why I've seen some projects require a strict namespace
separation: if all macro parameters and any identifiers declared in
macros use either a leading or a trailing _ (I prefer a trailing one,
to avoid risking conflicts with libc reserved namespace; but leading
is usually okay), and all other identifiers avoid that namespace, then
you will never have shadowing by calling a macro from normal code.
I started fixing the _FDT() macro since it is quite noisy at compile.
Same for qemu_fdt_setprop_cells(). So are we ok with names like 'ret_'
and 'i_' ? I used a 'local_' prefix for now but I can change.
See
https://lore.kernel.org/qemu-devel/20230831225607.30829-12-philmd@xxxxxxxxxx/
|