More D newb questions.
Me Here
p9e883002 at sneakemail.com
Mon May 5 06:32:02 PDT 2008
Hi all,
I getting error message from the following code that I do not know how to
interpret.
(Please don't critique the code. Its just an exercise :)
char[4] table[65536];
void buildTable() {
char[] abcd = "abcd";
for( ushort b1 = 0; b1 < 4; b1++ ) {
for( ushort b2 = 0; b2 < 4; b2++ ) {
for( ushort b3 = 0; b3 < 4; b3++ ) {
for( ushort b4 = 0; b4 < 4; b4++ ) {
for( ushort b5 = 0; b5 < 4; b5++ ) {
for( ushort b6 = 0; b6 < 4; b6++ ) {
for( ushort b7 = 0; b7 < 4; b7++ ) {
for( ushort b8 = 0; b8 < 4; b8++ ) {
table[
( b1 << 14 ) | ( b2 << 12 ) |
( b3 << 10 ) | ( b4 << 8 ) |
( b5 << 6 ) | ( b6 << 4 ) |
( b7 << 2 ) | b8
/* line 88 */ ] = abcd[ b1 ] ~ abcd[ b2 ] ~ abcd[ b3 ] ~
abcd[ b4 ]
~ abcd[ b5 ] ~ abcd[ b6 ] ~ abcd[ b7 ] ~
abcd[ b8 ];
}
}
}
}
}
}
}
}
}
The errors:
c:\dmd\test>dmd -O -inline count2Bit.d
count2Bit.d(88): Error: Can only concatenate arrays, not (int ~ int)
count2Bit.d(88): Error: Can only concatenate arrays, not (int ~ int)
count2Bit.d(88): Error: Can only concatenate arrays, not (int ~ int)
count2Bit.d(88): Error: Can only concatenate arrays, not (int ~ int)
count2Bit.d(88): Error: Can only concatenate arrays, not (int ~ int)
count2Bit.d(88): Error: Can only concatenate arrays, not (int ~ int)
count2Bit.d(88): Error: Can only concatenate arrays, not (int ~ int)
count2Bit.d(88): Error: cannot assign to static array table[
cast(uint)( cast(int)b1 << 14 | cast(int)b2 << 12 | cast(int)b3 << 10 |
cast(int)b4 << 8 |
cast(int)b5 << 6 | cast(int)b6 << 4 | cast(int)b7 << 2 | cast(int)b8)
]
Why does D think I'm trying to concatenate ints, when teh only expressions
involving catenation are
slices of char[] abcd?
Why is D casting my carefully specified ushorts to ints when doing
bit-twiddling?
I am specifically trying to avoid signed operations. Even promotion to uints
would seem
unnecessary, but its?
Finally, is it possible to populate a static lookup table at runtime?
Or should I just return a ref to the table and assignit to a const pointer in
the caller stack?
Cheers, b.
--
More information about the Digitalmars-d
mailing list