I'm afraid that the macro does not compile under MSVC:

warning C4067: unexpected tokens following preprocessor directive - expected a 
newline (compiling source file ..\..\source\tools\acpiexec\aetests.c)

 It looks like "__has_attribute" is not supported.

-----Original Message-----
From: Joe Perches <j...@perches.com> 
Sent: Monday, July 27, 2020 7:22 PM
To: Gustavo A. R. Silva <gust...@embeddedor.com>; Moore, Robert 
<robert.mo...@intel.com>; Rafael J. Wysocki <raf...@kernel.org>; Gustavo A. R. 
Silva <gustavo...@kernel.org>
Cc: Kaneda, Erik <erik.kan...@intel.com>; Wysocki, Rafael J 
<rafael.j.wyso...@intel.com>; Len Brown <l...@kernel.org>; ACPI Devel Maling 
List <linux-a...@vger.kernel.org>; open list:ACPI COMPONENT ARCHITECTURE 
(ACPICA) <de...@acpica.org>; Linux Kernel Mailing List 
<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH][next] ACPICA: Use fallthrough pseudo-keyword

On Mon, 2020-07-27 at 17:23 -0500, Gustavo A. R. Silva wrote:
> Hi,
> 
> 
> This is a macro pseudo-keyword, which expands to /* fallthrough */ for 
> compilers that don't support the attribute __fallthrough__. See:

Not really.

It expands to
        do {} while (0)
for compilers that do not support the __fallthrough__ attribute.

The /* fallthrough */ after that is for the human reader and is stripped before 
compilation.

> include/linux/compiler_attributes.h:213:
> 213 #if __has_attribute(__fallthrough__)
> 214 # define fallthrough                    __attribute__((__fallthrough__))
> 215 #else
> 216 # define fallthrough                    do {} while (0)  /* fallthrough */
> 217 #endif
> 
> So, any compiler (older or new) will be fine with it.

But old compilers should not emit warnings for these uses.


Reply via email to