[fpc-pascal] inline and other modifiers
Bernd
prof7bit at googlemail.com
Fri Dec 16 21:36:01 CET 2011
I have the following:
unit foo;
{$mode objfpc}{$H+}
interface
uses
foobar;
function BitCnt(ABitmap: TBitBoard): Integer;
implementation
{$ifdef cpu386}
function BitCnt(ABitmap: TBitBoard): Integer; assembler; register; nostackframe;
asm
...
end;
{$else}
function BitCnt(ABitmap: TBitBoard): Integer; inline;
begin
...
end;
This seems to compile and work as intended, no matter which of the two
implementations I choose. But I wonder how this can work? I always
thought that what is written in the interface section is
authoritative. How can the compiler properly use this unit and call
the function when the implementation actually implements a completely
different calling convention (inline) than the one that is declared in
the interface section?
Bernd
More information about the fpc-pascal
mailing list