Ada语言中函数import导入方式
当我们声明一个外部已经实现的函数并且我们觉得没有必要再去自己写实现的时候我们就使用import来导入。
导入方式有:
C/CPP(参数从右往左压栈,调用者来清栈)
Stdcall(参数从右向左压栈,被调用者清栈)
Intrinsic(编译器内置的函数实现)
Pascal,其实和Stdcall差不多,几乎用不上。
示例如下:
procedure System(cmd:String);
pragma import(c,system,"system");
function CreateWindowEx(
dwExStyle:DWORD;
lpClassName:LPCTSTR;
lpWindowName:LPCTSTR;
dwStyle:DWORD;
x,y,width,height:int;
hWndParent:HWND;
hMenu:HMENU;
hInst:HINSTANCE;
lpParam:LPVOID
) return HWND;
pragma Import(Stdcall,CreateWindowEx,"CreateWindowEx");
function Shift_Left(A:Dword;M:Natural) return Dword;
pragma Import(Intrinsic,Shift_Left);
关于Intrinsic说一下,这个东西的存在是由于语言本身没有直接设计左移和右移操作符,因为该
操作不符合强类型要求,所以语言没有像C那样设计。