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 <[email protected]> 
Sent: Monday, July 27, 2020 7:22 PM
To: Gustavo A. R. Silva <[email protected]>; Moore, Robert 
<[email protected]>; Rafael J. Wysocki <[email protected]>; Gustavo A. R. 
Silva <[email protected]>
Cc: Kaneda, Erik <[email protected]>; Wysocki, Rafael J 
<[email protected]>; Len Brown <[email protected]>; ACPI Devel Maling 
List <[email protected]>; open list:ACPI COMPONENT ARCHITECTURE 
(ACPICA) <[email protected]>; Linux Kernel Mailing List 
<[email protected]>
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