enum mode5
{
Manual = 0,// Standard in Pips
Kijun_sen = 1// Stoploss +/- Kijun-sen
};
//а потом где угодно можно объявить и компилятору будет пофигstring Kijun_sen ="Да мне вообще пофиг что ты там объявил";
enum mode5
{
Manual = 0,// Standard in Pips
Kijun_sen = 1// Stoploss +/- Kijun-sen
};
string Kijun_sen ="Да мне вообще пофиг что ты там объявил";
voidOnStart()
{
mode5 x = Kijun_sen;
}
//+------------------------------------------------------------------+
解释一下。
鸭子,你有一个图书馆。当然,会有不同的变数。所谓的意思是通过include连接mqh。
在C++中,externs只是在include库中描述,否则编译器不会让你编译该项目
外来的。
当你编译时,includer将被插入到程序的主体中。如果你想在那里描述一个实例,也会发生同样的事情。
或者,你可以用修饰语描述一个外部类或结构;)
在C++中,externs要在include库中描述,否则编译器不会让你编译该项目。
调用一个库的通常方法是使用 "#include "作为文件的名称
...
这样做的意义在于,在编译时,includer将被插入到程序的主体中,如果你想在那里描述一个实例,也会发生同样的事情。
重点是允许可链接文件独立于整个项目 进行处理,单独编译,从而检查错误。
重点是能够独立于整个项目来处理一个插件文件,将其单独编译,从而检查错误。
我认为我们正在寻找它不存在的那一点。
保留extern是为了与之前写的成千上万的代码兼容,帮助是由一个人写的,他从wiki上复制了一些信息。
我认为我们在寻找不存在的意义。
我认为,保留extern是为了兼容以前写的成千上万的代码,而帮助是由一个人从wiki上复制了一些信息而写的。
那么先生们的判决是什么呢?)如果我用.mqh(#include)写一个.mq5程序,我可以安全地写extern,而不用担心意外的后果(就像我在mql4中做的那样),或者使用输入?
这取决于什么目的。他们有不同的目的。
那么,先生们)的判决是什么?如果我用.mqh(#include)写一个.mq5程序,我可以安全地写extern,而不用担心意外的后果(就像我在mql4中做的那样),或者我还是应该使用输入?
使用标准的MQL程序结构:所有的输入都在代码的开头,然后是所有的包含。 例子是这样写的,codobase中99%的代码也是这样写的,你不会得到任何意外。
再次关于extern - 它们可以在程序执行 过程中被改变,但在我看来这是不好的做法,通常所有的外部变量在OnInit()中被复制到它们的变量中,然后与它们一起工作(作为一个专家的例子,为4字符和5字符工作 - 这种设计的例子在网络吨)
而底线是--不要使用extern,如果你修改了旧的代码,用输入法代替,如果extern中有记录,编译器会帮助你发出警告--你必须修复它。
顺便说一下,我发现编译器并不关心我可以把枚举的内容重新声明为一个变量
顺便说一下,我发现编译器并不关心我可以把枚举的内容重新声明为一个变量
如果我声明一个枚举 变量怎么办?
隐式枚举转换 tst1.mq5 24 17
你也可以检查EnumToString()。
我认为没有声明变量的类型在编译时被简单地抛出,因为没有使用。