Given this unit: unit ExtMath;
{$mode objfpc} interface function LeadingZeroBits(n: Byte): Integer; inline; implementation function LeadingZeroBits(n: QWORD; BitSize: Integer): Integer; begin Result := 0; end; function LeadingZeroBits(n: Byte): Integer; begin Result := LeadingZeroBits(QWORD(n), SizeOf(Byte)*8); end; end. and this program program test; {$mode ObjFPC} uses Extmath; var b: byte; L: Integer; begin b := 0; L := LeadingZeroBits(b); end. On Windows this won't build with 3.2.2 or 3.2.0. It will build with 3.0.4. C:\Users\Bart\LazarusProjecten\bugs\Console\linkerror>fpc test.pas Free Pascal Compiler version 3.2.2 [2021/05/15] for i386 Copyright (c) 1993-2021 by Florian Klaempfl and others Target OS: Win32 for i386 Compiling test.pas Compiling extmath.pp test.pas(9,3) Note: Local variable "L" is assigned but never used Linking test.exe test.pas(13,1) Error: Undefined symbol: EXTMATH_::=::\_LEADINGZEROBITS$QWORD$LONGINT::=::\LONGINT test.pas(13,1) Fatal: There were 1 errors compiling module, stopping Fatal: Compilation aborted Error: C:\devel\fpc\3.2.2\bin\i386-win32\ppc386.exe returned an error exitcode The error goes away if I remove the inline directive from the function definition in the interface section, or if I also declare the other function (which gives the linker error) in the interface section. -- Bart _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal