Cast a struct to void*

John Colvin via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Jan 9 10:50:09 PST 2015


On Friday, 9 January 2015 at 18:35:56 UTC, anonymous wrote:
> On Friday, 9 January 2015 at 18:25:42 UTC, John Colvin wrote:
>> struct S
>> {
>>    void* p;
>> }
>>
>> void main()
>> {
>>    S s;
>>    auto a = cast(void*)s; //Error: e2ir: cannot cast s of type 
>> S to type void*
>> }
>>
>> Is there are a good reason for this being disallowed?
>
> You'd expect `cast(void*)s == s.p`? That doesn't work for any 
> type of p.

I was expecting it to work regardless of the type of p. I have an 
8 byte (on x86_64) struct which I want to reinterpret as a void*

> You can do it with a slightly fancier (and more dangerous) 
> cast: `*cast(void**)&s`.

Yuk. Better than nothing though. Thanks :)


More information about the Digitalmars-d-learn mailing list