On Tue, 23 Dec 2008 11:07:08 +0300, Janderson <a...@me.com> wrote:
Moritz Warning wrote:
On Tue, 16 Dec 2008 19:54:11 +0000, BCS wrote:
Reply to Moritz,
Hi,
I have problems to convert a char[4] to an uint at compile time. All
variations (I've tried) of using an enum crashes dmd:
union pp { char[4] str; uint num; }
const uint x = pp("abcd").num
This does also doesn't work:
const uint x = cast(uint) x"aa aa aa aa";
Any ideas?
template Go (char[4] arg)
{
const uint Go = (arg[0] << 24) | (arg[1] << 16) | (arg[2] << 8) |
arg[3];
}
import std.stdio;
void main()
{
writef("%x\n", Go!("Good"));
}
Thanks!
That workaround should do it.
Maybe it will be possible to just do cast(uint) "abcd" in the future.
:>
That would only cast the pointer. It should be something like :
cast(uint)(*"abcs") or *cast(uint*) "abcs".
-Joel
And what about endianness? You can't have a feature in a language that gives
different results in different environment.