[fpc-devel] Warning: Conversion between ordinals and pointers is not portable

Martin lazarus at mfriebe.de
Sun Dec 2 22:26:02 CET 2012


On 02/12/2012 21:05, Jonas Maebe wrote:
> As always when asking about help with something the compiler does, post a complete and compilable program that demonstrates your question. The following code does not produce any warning (it will produce hints):
>
>
Sorry about that. I had to extract it from same bigger code.

If compiled, with PtrUint (as is below)

Free Pascal Compiler version 2.6.0 [2012/01/04] for i386
Compiling C:\Users\martin\AppData\Local\Temp\project1.lpr
project1.lpr(11,28) Warning: Variable "p" does not seem to be initialized
project1.lpr(11,11) Warning: Conversion between ordinals and pointers is 
not portable
project1.lpr(9,5) Note: Local variable "darr" is assigned but never used
Linking C:\Users\martin\AppData\Local\Temp\project1.exe


If replace the type
type IPointer = PtrInt;

Free Pascal Compiler version 2.6.0 [2012/01/04] for i386
Compiling C:\Users\martin\AppData\Local\Temp\project1.lpr
project1.lpr(11,28) Warning: Variable "p" does not seem to be initialized
project1.lpr(11,11) Hint: Conversion between ordinals and pointers is 
not portable
project1.lpr(9,5) Note: Local variable "darr" is assigned but never used
Linking C:\Users\martin\AppData\Local\Temp\project1.exe

So actually the message is just downgraded from Warning to Hint.

and the full command line as issued by Lazarus:
fpc.exe  -MObjFPC -Scghi -O1 -gw2 -godwarfsets -gl -gh -vewnhi 
-Filib\i386-win32  -FUlib\i386-win32\ -l 
C:\Users\martin\AppData\Local\Temp\project1.lpr"


If I remove the " - PointerSize2" it is always a hint. But the location 
(11,11) doe not point to thin, it points to the uppercase "P" of this 
most outer "Pointer()"typecast


program Project1;
{$mode objfpc}{$H+}
uses Classes;
type IPointer = PtrUInt;
const
   PointerSize = IPointer({$IFDEF CPU64}8{$ELSE}4{$ENDIF});
   PointerSize2 = IPointer(2*PointerSize);
var
   p,darr: Pointer;
begin
   darr := Pointer(IPointer(p^) - PointerSize2);
end.




More information about the fpc-devel mailing list