08.08.2012 16:29, bearophile пишет:
That C code doesn't look correct, because the given data contains no
pointers.

But this C code compiles:


void foo(const void** data) {}
int data[2][3];
int main() {
   foo(data);
   return 0;
}

Bye,
bearophile

As I know in C an array is equal to pointer, so array of array == array of pointers == pointer to pointer == pointer to array. Correct me if I'm wrong.

I'm trying to use OpenGL function glMultiDrawElements. It has signature:
void glMultiDrawElements(
  enum mode,
  sizei *count,
  enum type,
  void **indices,
  sizei primcount
);
If I declare indices like
uint[][] indices;
then code compiles but doesn't work (but it works in C). If I do as I described in the first post - it works in D. And I'd like to understand the reason of it. I think the reason is difference tween C array and D array, but I'm not sure.

p.s. example of real code is too large to paste

Reply via email to