digitalmars.D - extern(C) declaration inside function
- =?UTF-8?B?Ikx1w61z?= Marques" (12/12) Sep 10 2013 When you declare an extern(C) function inside a D function it
- =?UTF-8?B?Ikx1w61z?= Marques" (2/3) Sep 12 2013 *bump*
- deadalnix (3/7) Sep 12 2013 This is invalid in C, so not manglable. when you use extern C in
- Andrej Mitrovic (7/15) Sep 13 2013 I was going to suggest using pragma(mangle, "...") as a workaround
When you declare an extern(C) function inside a D function it
seems to continue to use D's name mangling, which is unexpected
for me. For instance:
void main()
{
extern(C) void foo(int);
foo(42);
}
Undefined symbols for architecture x86_64:
"__D4test4mainFZv3fooUiZv", referenced from:
__Dmain in test.o
Is this a bug?
Sep 10 2013
On Tuesday, 10 September 2013 at 13:41:14 UTC, Luís Marques wrote:Is this a bug?*bump*
Sep 12 2013
On Friday, 13 September 2013 at 02:46:22 UTC, Luís Marques wrote:On Tuesday, 10 September 2013 at 13:41:14 UTC, Luís Marques wrote:This is invalid in C, so not manglable. when you use extern C in this context, you mean calling convention.Is this a bug?*bump*
Sep 12 2013
On 9/10/13, <luis luismarques.eu>" puremagic.com <"\"Lu=EDs".Marques"> wrot=
e:
When you declare an extern(C) function inside a D function it
seems to continue to use D's name mangling, which is unexpected
for me. For instance:
void main()
{
extern(C) void foo(int);
foo(42);
}
I was going to suggest using pragma(mangle, "...") as a workaround
(using a git-head compiler), but actually it won't work here because
this pragma can only be used in module-scope. Apparently there's a
difference between a pragma declaration and pragma statement, I'm not
sure why we have this split.
Sep 13 2013









"deadalnix" <deadalnix gmail.com> 