extern(C++, ns)

Jacob Carlborg via Digitalmars-d digitalmars-d at puremagic.com
Fri Jan 8 00:11:12 PST 2016


On 2016-01-08 06:14, Manu via Digitalmars-d wrote:

> Again, this is looking at the simple case. The details and more
> complex scenarios start to reveal problems.
>
> If the same C++ namespace is present in multiple modules, that is,
> x.ns and y.ns, you want to 'import x, y;', the symbols from x and y
> are imported into the local module scope, but now you have a name
> conflict on 'ns'. Does the imported 'ns' refer to x.ns or y.ns? This
> case is everywhere, since every module with extern(C++, ns) will have
> the same top-level symbol.

This is what I have found out:

module foo;

extern(C++, ns)
{
     int a();
}

module bar;

extern(C++, ns)
{
     int b();
}

module main;

import foo;
import bar;

extern(C++, ns)
{
     int c();
}

void main()
{
     a();
     b();
     c();

     // ns.a(); // does not work
     foo.ns.a();
     ns.c();
}

"ns.a()" works if there is no other extern(C++, ns), either in "main" or 
"bar". Is that working for you, or do you have more complex examples 
where the above doesn't work?

Walter, should "ns.a()" work in the above example?

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list