Bug or what?

Marco Leise via Digitalmars-d digitalmars-d at puremagic.com
Wed Aug 27 17:16:43 PDT 2014


Am Wed, 27 Aug 2014 20:30:08 +0000
schrieb "Phil Lavoie" <maidenphil at hotmail.com>:

> On Wednesday, 27 August 2014 at 20:28:11 UTC, Phil Lavoie wrote:
> > On Wednesday, 27 August 2014 at 20:05:27 UTC, MacAsm wrote:
> >> On Wednesday, 27 August 2014 at 19:51:48 UTC, Phil Lavoie 
> >> wrote:
> >>> Ok so me and one of my colleagues have been working on some 
> >>> code at a distance. We both use dmd as the compiler. I am 
> >>> under Windows, she OSX.
> >>>
> >>> It is not uncommon that she experiences more strictness in 
> >>> the type system than I do. For example, something like this 
> >>> does compile for me, but not for her:
> >>>
> >>> int func(size_t i)
> >>> {
> >>> return i;
> >>> }
> >>>
> >>> It passes my compilation. She gets an error msg about 
> >>> implicit casting of uint to int. I'm just wondering... has 
> >>> anybody else experienced that and what is the expected 
> >>> behavior?
> >>>
> >>> Thanks,
> >>> Phil
> >>
> >> size_t is a typedef to unsigned (check out 
> >> http://dlang.org/type.html). So this warning is correct. I 
> >> don't get this warning too. Maybe it's the type-checking that 
> >> does differ on OSX. Are you using same compiler version and 
> >> flags?
> >
> > Yeah yeah I checked it out and we both use same versions and 
> > everything. Basically, to bit word size coherent I should just 
> > have writtent this instead:
> >
> > ptrdiff_t func(size_t i) {return i;}
> >
> > Though it is still somewhat unsafe, at least it behaves the 
> > same on both our machines.
> >
> > Phil
> 
> Note that the compiler behaves the same, the code, not 
> necessarily.

In my opinion this should always give you a compiler warning,
as it is not portable to 64-bit:

uint func(size_t i) {return i;}

But that has been discussed and reported to death already :D

I'm also somewhat pedantic about assigning unsigned to signed
types and vice versa. Most of the times I'd rather change the
code so that I can keep using e.g. unsigned absolute values
instead of differences.

-- 
Marco



More information about the Digitalmars-d mailing list