Access to structures defined in C

Joe jma at freedomcircle.com
Sun Jun 10 18:48:04 UTC 2018


On Sunday, 10 June 2018 at 17:59:12 UTC, Joe wrote:
> That worked but now I have a more convoluted case: a C array of 
> pointers to int pointers, e.g.,
>
> int **xs[] = {x1, x2, 0};
> int *x1[] = {x1a, 0};
> int *x2[] = {x2a, x2b, 0};
> ...
> int x2a[] = { 1, 3, 5, 0};
>
> Only the first line is exposed (and without the 
> initialization). So I tried:
>
> extern(C) __gshared extern int**[1] xs;
>
> The D compiler accepts that, but just about any manipulation 
> gets screamed at, usually with Error: only one index allowed to 
> index int. Note that I'm trying to access the ints, i.e., in C 
> something like xs[1][0][2] to access the 5 in x2a. Do I have to 
> mimic the intermediate C arrays?

I don't know why I didn't try this first.  It seems that the D 
equivalent of C's xs[1][0][2] is simply xs.ptr[[1][0][2].


More information about the Digitalmars-d-learn mailing list