setting statically sized multi-dimensional arrays
Spacen Jasset
spacenjassset at yahoo.co.uk
Tue Jan 22 15:23:16 PST 2008
Ary Borenszweig wrote:
> Spacen Jasset escribió:
>> I have function below where I try to set a float[4][4] using array
>> syntax. This doesn't work. Am I doing it wrongly, or is this not
>> supported in dmd version 1? I seem to remember seeing something about
>> this but can't remember where.
>>
>>
>>
>> void MakeRotationAboutX(float[4][4] m, float angle)
>> {
>> m[] = [[1f, 0, 0, 0],
>> [0, cos(angle * PI / 180), sin(angle * PI / 180), 0],
>> [0, -sin(angle * PI / 180), cos(angle * PI / 180), 0],
>> [0, 0, 0, 1]];
>> }
>>
>> main.d:501: Error: cannot implicitly convert expression
>> ..lots of stuff..
>> of type float[][4u] to float[4u]
>> Command /usr/bin/rebuild returned with code 256, aborting.
>
> Try putting the "f" suffix on the first zeros in the second, third and
> foruth rows, too. It works for me:
>
> import std.math;
>
> void MakeRotationAboutX(float[4][4] m, float angle)
> {
> m[] = [[1f, 0, 0, 0],
> [0f, cos(angle * PI / 180), sin(angle * PI / 180), 0],
> [0f, -sin(angle * PI / 180), cos(angle * PI / 180), 0],
> [0f, 0, 0, 1]];
> }
It still fails with the same error, I did try adding the 'f' suffix, and
it's probably needed, but that didn't fix it.
I have:
On windows:
Digital Mars D Compiler v1.015
Copyright (c) 1999-2007 by Digital Mars written by Walter Bright
And on linux:
gdc (GCC) 4.1.3 20070831 (prerelease gdc 0.25, using dmd 1.021) (Ubuntu
0.25-4.1.2-16ubuntu1)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
More information about the Digitalmars-d-learn
mailing list