Description of External Functions
外部函数的描述
在另一个模块中定义的外部函数必须明确描述。描述应包括返回类型、函数名称以及一系列输入参数及其类型。缺乏这样的描述可能会在编译、构建或执行程序时导致错误。在描述外部对象时,使用 #import 关键字来指示模块。
示例:
#import "user32.dll"
int MessageBoxW(int hWnd ,string szText,string szCaption,int nType);
int SendMessageW(int hWnd,int Msg,int wParam,int lParam);
#import "lib.ex4"
double round(double value);
#import借助 import 功能,可以轻松描述从外部 DLL 或编译后的 EX4 库调用的函数。EX4 库是编译后的 ex4 文件,具有 库 属性。只有使用 export 修饰符 描述的函数才能从 EX4 库导入。
请记住,如果同时导入 DLL 和 EX4 库,它们的名称应该不同(无论它们位于哪个目录中)。所有导入的函数都具有与库“文件名”相对应的作用域解析。
在程序中从不同的执行上下文使用同名函数可能会导致歧义。为了避免函数调用的歧义,始终需要使用 作用域解析操作明确指定函数的作用域。
示例:
#import "kernel32.dll"
int GetLastError();
#import "lib.ex4"
int GetLastError();
#import
class CFoo
{
public:
int GetLastError() { return(12345); }
void func()
{
Print(GetLastError()); // call of the class method
Print(::GetLastError()); // call of the MQL5 function
Print(kernel32::GetLastError()); // call of the DLL library function from kernel32.dll
Print(lib::GetLastError()); // call of the EX4 library function from lib.ex4
}
};
void OnStart()
{
CFoo foo;
foo.func();
}另请参阅
最后更新于