Thread overview
extern opaque struct
Aug 23, 2015
John Colvin
Aug 23, 2015
John Colvin
Aug 24, 2015
Daniel Murphy
Aug 24, 2015
John Colvin
Aug 24, 2015
Artur Skawina
August 23, 2015
Let's say I have some C headers that have code like this in:

extern struct UndeclaredStruct blah;
Undeclared *p = &blah;

which would naïvely translate to D as:

struct UndeclaredStruct;
extern UndeclaredStruct blah;
auto p = &blah;

which doesn't compile. Why not? Neither the size nor any default initialiser is needed.
August 23, 2015
On Sunday, 23 August 2015 at 22:20:26 UTC, John Colvin wrote:
> Let's say I have some C headers that have code like this in:
>
> extern struct UndeclaredStruct blah;
> Undeclared *p = &blah;
>
> which would naïvely translate to D as:
>
> struct UndeclaredStruct;
> extern UndeclaredStruct blah;
> auto p = &blah;
>
> which doesn't compile. Why not? Neither the size nor any default initialiser is needed.

s/Undeclared /UndeclaredStruct/
August 24, 2015
"John Colvin"  wrote in message news:uhpgjffttsuqeswyjtam@forum.dlang.org...

> Let's say I have some C headers that have code like this in:
>
> extern struct UndeclaredStruct blah;
> Undeclared *p = &blah;
>
> which would naïvely translate to D as:
>
> struct UndeclaredStruct;
> extern UndeclaredStruct blah;
> auto p = &blah;
>
> which doesn't compile. Why not? Neither the size nor any default initialiser is needed.

It should work, please file in bugzilla. 

August 24, 2015
On 08/24/15 00:20, John Colvin via Digitalmars-d wrote:
> Let's say I have some C headers that have code like this in:
> 
> extern struct UndeclaredStruct blah;
> Undeclared *p = &blah;
> 
> which would naïvely translate to D as:
> 
> struct UndeclaredStruct;
> extern UndeclaredStruct blah;
> auto p = &blah;
> 
> which doesn't compile. Why not? Neither the size nor any default initialiser is needed.

Yeah; workaround (plus mangling and TLS fix):

   struct UndeclaredStruct {}
   extern extern (C) __gshared UndeclaredStruct blah;
   auto p = &blah;

artur
August 24, 2015
On Monday, 24 August 2015 at 04:08:28 UTC, Daniel Murphy wrote:
> "John Colvin"  wrote in message news:uhpgjffttsuqeswyjtam@forum.dlang.org...
>
>> Let's say I have some C headers that have code like this in:
>>
>> extern struct UndeclaredStruct blah;
>> Undeclared *p = &blah;
>>
>> which would naïvely translate to D as:
>>
>> struct UndeclaredStruct;
>> extern UndeclaredStruct blah;
>> auto p = &blah;
>>
>> which doesn't compile. Why not? Neither the size nor any default initialiser is needed.
>
> It should work, please file in bugzilla.

done: https://issues.dlang.org/show_bug.cgi?id=14954