C++ Logo

sg15

Advanced search

Re: [D3034] Module Declarations Shouldn’t be Macros

From: Boris Kolpackov <boris_at_[hidden]>
Date: Mon, 6 Nov 2023 14:16:43 +0200
Boris Kolpackov via SG15 <sg15_at_[hidden]> writes:

> Michael Spencer <bigcheesegs_at_[hidden]> writes:
>
> > On Fri, Nov 3, 2023 at 12:43 AM Boris Kolpackov <boris_at_[hidden]>
> >
> > > #ifdef VERSION
> > > export module version;
> > > #else
> > > export module final;
> > > #endif
> > >
> >
> > This is already banned by the grammar. You can't have an if-group that
> > spans a pp-module.
>
> Surprising, but it seems this indeed was banned by P1857. FWIW, neither
> GCC 13 nor Clang 17 enforce this.

Check this out:

https://sourcegraph.com/search?q=context:global+%23if+defined%28__cpp_modules%29+-file:.*test.*+-file:.*clang.*+-file:.*gcc.*&patternType=standard&case=yes&sm=1&groupBy=repo

In particular, cases like these:

#if defined(__cpp_modules)
export module expresscpp;
...

It may be illegal but seeing that it's not diagnosed, people are starting
to do it.

Received on 2023-11-06 12:16:48