On Monday, 13 April 2015 at 17:05:59 UTC, BS & LD wrote:
On Monday, 13 April 2015 at 17:02:13 UTC, CraigDillabaugh wrote:
On Monday, 13 April 2015 at 16:53:55 UTC, BS & LD wrote:
As you know in 'C' you can create a variable-length-array using variably modified type and a run-time variable allocating a storage for it - the same way for any local (normally using the stack).

However in 'D' I don't see such feature. Code like this fails:

void main()
{
  size_t szArr = 3;

  int[szArr] arr;
}

With this error message:

error: variable szArr cannot be read at compile time
   int[szArr] arr;

Life example - http://melpon.org/wandbox/permlink/a6CzBhYk88FohKlf

Note: I'm also amazed why 'D' compiler can't detect that 'szArr' is a constant anyway.

This likely belongs in D.learn.  What you are looking for is:

int[] arr;
arr.length = 3;

I suppose this will allocate the array on the 'heap' or it's storage will last past the function scope doesn't it?

What I want is to allocate such variable-length-array on the stack as any other local variable.

I suppose alloca will do it (somewhat unsafe?).

Reply via email to