On 17/04/2010 23:48, Jonas Maebe wrote:
On 17 Apr 2010, at 21:47, Martin wrote:

Maybe it's my setting, but I get other warnings, hints even..

var
  p: Pointer;
  e: TEnumType;
begin
  e:= TEnumType(p);

didn't give me any warning (2.4.0, 2.5.1), but it fails (so I am told) on 64bit, [ Illegal type 
conversion: "^untyped" to "<enumeration type>"]

If untyped^ to enum is forbiden, then why does it even *work* on 32 bit? (not 
to speak, of not giving a warning?)
It works in 32 bit because the default size of enumeration types is 4 bytes 
(also on 64 bit platforms, to avoid problems with reading binary files 
containing enumeration types), and explicitly type casting one type to another 
type of the same size is always allowed.

ah yes, I see, so a warning would upset many people using other 64bit unsave code.... My initial confusion was when I saw the error message => I thought the problem was because it was untyped (and it was untyped in 32 bit too


Maybe at some point a switch -w#### some way to enable warnings for code that isn't 64/32 compatible?

Martin
_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to