https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93287
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution|--- |INVALID
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
_Static_assert is a declaration in the C standard to allow it to be at the
toplevel too.
Also this fails as expected (on both GCC and Clang):
int f(void)
{
if (1)
_Static_assert (1);
}
---- CUT ----
so yes _Static_assert is a declaration.
I would say it is a bug in clang rather than gcc here.
clang documentation is really really lacking here too:
https://clang.llvm.org/docs/DiagnosticsReference.html#wdeclaration-after-statement
:)
GCC is much better:
https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/Warning-Options.html#index-Wdeclaration-after-statement
-Wdeclaration-after-statement (C and Objective-C only)
Warn when a declaration is found after a statement in a block. This construct,
known from C++, was introduced with ISO C99 and is by default allowed in GCC.
It is not supported by ISO C90. See Mixed Declarations[1].
[1]
https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/Mixed-Declarations.html#Mixed-Declarations