C.h to D conversion (structs)
Chris via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Mar 15 11:04:00 PDT 2016
On Tuesday, 15 March 2016 at 17:10:03 UTC, Adam D. Ruppe wrote:
> On Tuesday, 15 March 2016 at 16:56:00 UTC, Chris wrote:
>> Do you mean I need to void initialize them in the C code or in
>> D? And if in D, how would I do that, with `static this`?
>
> in D, at the usage point with =void where you declare the
> variable of that type. So in your code:
>
> struct C
> {
> A a = void;
> B b = void;
> }
>
> though I'm pretty sure it wouldn't matter in this specific
> instance because they would be all zeroes anyway... your real
> code probably has a char or a float in it, right?
>
>
>
> I do not recommend trying that though, it is better to actually
> compile+link in the modules.
I'm not 100% sure what you mean with compile+link in the modules.
The structs are all defined in the original (third party) C
header file. It's nothing I added (in which case I would have to
recompile the C library). The C structs in the C library should
be visible to the linker, shouldn't they? Just as when you define:
extern (C): size_t strlen(const char *str);
and the linker will find it automatically. The error I get is as
if the structs were not defined (or as if the lib weren't linked
to).
More information about the Digitalmars-d-learn
mailing list