Skybuck Flying schrieb:
Not really, because if the platform changes from 32 bit to 64 bit then other types would change too.

For example type declared as being longword would change to uint64.

Please understand generic types first.

A LongWord will always have 32 bits, because it's a concrete type. Instead Integer, Cardinal, Char, String or Real can vary with every compiler version or target platform, because these are *generic* types.

BTW I don't know of *any* language that changed "long" integers to 64 bits on 64 bit platforms.


Since C has absolutely *no* idea of fixed-size integers, all concrete types are subject to conditional definitions in the header files:

#if (sizeof(int)==4)
  typedef int32 int;
#elif (sizeof(int)==2)
  typedef int16 int;
#else
  #error clueless
#endif

#if (sizeof(int*)==4)
  typedef ptr_int int32;
#elif (sizeof(int*)==8)
  typedef ptr_int int64; //hope that an int64 type has been found out
#else
  #error clueless
#endif

DoDi

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

Reply via email to