On Thu, 6 Apr 2017 18:25:40 -0300 African Wild Dog <paintedlyc...@gmail.com> wrote:
> Which integer types have their size dependent on platform? > E.g. in Delphi, LongInt can 32 or 64 bits depending on the platform. Why do you think that Delphi's longint has 64bits anywhere? Delphi's NativeInt is 32 or 64bit depending on platform. > The documentation says "every platform has a ”native” integer size, > depending on whether the platform is 8-bit, 16-bit, 32-bit or 64-bit. e.g. > On AVR this is 8-bit. ", but it is not clear about which integer types are > "natives". Most of FPC's integer types defined via IFDFEs. See fpc/rtl/inc/systemh.inc You can use Lazarus' Find Declaration on any type and see the definition. For example: {$ifdef CPU64} SizeInt = Int64; SizeUInt = QWord; PtrInt = Int64; PtrUInt = QWord; ValSInt = int64; ValUInt = qword; CodePointer = Pointer; CodePtrInt = PtrInt; CodePtrUInt = PtrUInt; {$endif CPU64} {$ifdef CPU32} SizeInt = Longint; SizeUInt = DWord; PtrInt = Longint; PtrUInt = DWord; ValSInt = Longint; ValUInt = Cardinal; CodePointer = Pointer; CodePtrInt = PtrInt; CodePtrUInt = PtrUInt; {$endif CPU32} { NativeInt and NativeUInt are Delphi compatibility types. Even though Delphi has IntPtr and UIntPtr, the Delphi documentation for NativeInt states that 'The size of NativeInt is equivalent to the size of the pointer on the current platform'. Because of the misleading names, these types shouldn't be used in the FPC RTL. Note that on i8086 their size changes between 16-bit and 32-bit according to the memory model, so they're not really a 'native int' type there at all. } NativeInt = PtrInt; NativeUInt = PtrUInt; Mattias _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal