On 2024-03-21 18:40, Andrew Pinski wrote:
On Thu, Mar 21, 2024, 17:20 Kaz Kylheku <[email protected]> wrote: For instance,
suppose we have a macro that expands to some block
of code in which there is an internal goto. If we have it
#define MAC(...) { ... goto _label; ... __label: ; }
then this cannot be used twice in the same function; labels have
function scope.
In this case why can't you use gcc's already extension of defining a local
label?
https://gcc.gnu.org/onlinedocs/gcc-13.2.0/gcc/Local-Labels.html
This extension has been around for over 20 years specifically for that use
case.
Yes. For that case, local labels are a nice solution.
It's just an example of the sort of thing for which it may be useful
for a macro to be able to invent different identifiers in different
invocations.
The GNU preprocessor is used for multiple languages, and is also exposed
as an independent utility that can be used to process anything that has
a sufficiently C-like token structure.
Since local labels are intended for macros, they are not subject to
diagnosis by -Wshadow. In the ordinary namespace for
variables/functions/typedefs, there is no such concession. Macros
that reuse identifiers in nested scopes will trigger nuisance warnings
from -Wshadow.