[Issue 17748] extern(C) do nothing on struct methods
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Oct 17 12:29:15 UTC 2017
https://issues.dlang.org/show_bug.cgi?id=17748
Martin Nowak <code at dawg.eu> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |code at dawg.eu
--- Comment #7 from Martin Nowak <code at dawg.eu> ---
https://dlang.slack.com/archives/C1ZDHBB2S/p1508243056000454
IIUC, `extern(C)` is simply ignored for non-static member methods atm., neither
changes mangling nor the method ABI.
The only case where that is helpful is with blunt struct scope `extern(C)`.
```struct S
{
extern(C): // just everything
static void foo()
{
}
float foo(int a, float b)
{
return a + b;
}
}
```
At a first look it seems reasonable to deprecate using `extern(C)` on
non-static member methods, and require people to rewrite above code to
```struct S
{
extern(C) static void foo()
{
}
float foo(int a, float b)
{
return a + b;
}
}
```
.
Static methods should support extern(C) calling convention, and in that case it
seems reasonable to stick with the current behavior, to only affect the calling
convention, but not the mangling.
--
More information about the Digitalmars-d-bugs
mailing list