On 11/23/2012 03:01 AM, Jonathan M Davis wrote:
On Friday, November 23, 2012 01:52:51 Timon Gehr wrote:
On 11/22/2012 11:25 AM, monarch_dodra wrote:
On Thursday, 22 November 2012 at 06:52:55 UTC, Rob T wrote:
FYI
I'm getting these compile errors, must be the compiler flags I'm using?
Must be that bearophile and I are on windows (ergo 32), so "length" is
of type "size_t", which is a "uint". This matches the key of the
dictionary.
If you are linux, then you are probably 64, and the type of
"dictionary.length - 1" gets promoted to ulong, and can't be placed back
into the dictionary. I don't think this has anything to do with flags.
Placing a cast here "cast(uint)" would be the correct workaround I think.
The flag is -m32.
That would be a very poor solution if the problem is that you're trying to
assign a size_t to a uint. Sure, -m32 will make it compile a 32-bit binary
which would then work, but well-written code doesn't generally care whether
it's on a 32-bit or 64-bit machine, so if a variable of type size_t is being
assigned to anything smaller than long, a cast or std.conv.to would be the
correct way to handle it. Unless you really have to target a specific
architecture, writing code which assumes what architecture it's in is
generally bad practice. It should be as cross-platform as is reasonably
possible, and D and Phobos are well set up to do that.
- Jonathan M Davis
Sure, but that is up to the author.