pragma(mangle) only works on functions

Freddy via Digitalmars-d digitalmars-d at puremagic.com
Sun Aug 16 22:05:31 PDT 2015


I felt this was important enough to big over to the D general 
chat.
Original 
Thread:http://forum.dlang.org/thread/zmmsodqrffvcdqidvodz@forum.dlang.org

BBasile's Example:

On Monday, 17 August 2015 at 04:32:47 UTC, BBasile wrote:
> On Monday, 17 August 2015 at 02:46:02 UTC, Freddy wrote:
>> I can't get pragma(mangle) to work on templates(or structs).
>> [...]
>
> I don't know why but it looks like it only works on functions. 
> Even if a struct is not a template the custom symbol mangle 
> won't be handled:
>
> ---
> import std.stdio;
>
> pragma(mangle, "a0") class MyClass{}
> pragma(mangle, "a1") struct MyStruct{}
> pragma(mangle, "a2") void body_func();
> pragma(mangle, "a3") struct MyStructh
>     { pragma(mangle, "a4") void foo(){}}
>
> void main()
> {
>     writeln(MyClass.mangleof);
>     writeln(MyStruct.mangleof);
>     writeln(body_func.mangleof);
>     writeln(MyStructh.mangleof);
>     writeln(MyStructh.foo.mangleof);
> }
> ---
>
> which outputs:
>
> ---
> C13temp_019455687MyClass
> S13temp_019455688MyStruct
> a2
> S13temp_019455689MyStructh
> a4
> ---
>
> 'a4' being printed and not 'a3' is interesting BTW ;)
> I think that the manual is not clear enough about this pragma:
>
> http://dlang.org/pragma.html#mangle
>
> Unless the spec. are more detailed this could be considered as 
> a bug.




More information about the Digitalmars-d mailing list