At 04:33 16/11/2009, you wrote: >Hi all. I am new to fpc and linux in general, though I do have a long >time experience with Delphi. > >I was writing some code basic system (using the libc library) when I >ran across the following problem .. some code: > >const > libc = 'libc.so.6'; > >type > TTimeSpec = record > Sec: Cardinal; { Seconds } > NSec: Cardinal; { Nanoseconds } > end; > PTimeSpec = ^TTimeSpec; > >function nanosleep(const RequestedTime: TTimeSpec; Remaining: >PTimeSpec): Integer; cdecl; external libc; > >The problem with fpc and the above import is with the RequestedTime >parameter, declared as a const record. In Delphi declaring a const >record parameter cause the compiler to generate code to pass the >record by reference (that is to say passing the address). In fpc, >however this is not happening. > >My question is why. Why isn't fpc generating the code to pass a const >record as a reference? > >I can find tons of WinAPI code where records are passed as const >references by Delphi. I see this issue causing me some headaches as I >port my Delphi code to run across platforms using fpc.
One question, why do you reimplement libc<->fpc wrapping lib? This function is in the BaseUnix unit as fpnanosleep. HTH ---------------------------------------------- Useful Acronyms: GPL = Greedy Pengüin Licence _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal