FreeBASIC uses msvcrt.dll freely.
The bindings are all in the inc/crt folder.
Here are the layouts of the declarations in mem.bi
extern "C"
declare function memchr (byval as const any ptr, byval as long, byval as size_t) as any ptr
declare function memcmp (byval as const any ptr, byval as const any ptr, byval as size_t) as long
declare function memcpy (byval as any ptr, byval as const any ptr, byval as size_t) as any ptr
declare function memmove (byval as any ptr, byval as const any ptr, byval as size_t) as any ptr
declare function memset (byval as any ptr, byval as long, byval as size_t) as any ptr
end extern
where extern C can be equated with a cdecl at each function.
Here is a small sample of a few translations:.
function Printf(mask : pchar):integer; cdecl; varargs; external 'msvcrt.dll' name 'printf';
function memcpy(T:pointer;F:pointer;sz:integer):integer ; cdecl external 'msvcrt.dll' name 'memcpy';
function system(s:pchar):integer ; cdecl external 'msvcrt.dll' name 'system';
var
a,b:array of integer;
i:integer;
begin
setlength(a,8);
setlength(b,8);
for i:=0 to 7 do a[i]:= i*i;
for i:=0 to 7 do printf('%d,',a[i]);
memcpy(@b,@a,8*sizeof(a));
writeln;
for i:=0 to 7 do printf('%010d '#13#10'',b[i]);;
system('pause');
end.
Is there a bas2pas converter out there somewhere to translate these headers?