外部和输入之间的区别 - 页 2

 
Artyom Trishkin:

关于输入,一切都很清楚。关于extern的事情--在那里,在我看来,你可以先在不同的文件中声明具有相同类型和标识符的变量,以附在项目中,然后发现你不能这样声明。这当然是一个三层的印象主义...

extern的含义是,如果主文件(main)有一些变量,而另一个文件附在这个文件上。而在这个附件文件中,我们需要使用在主文件中声明的变量,然后在附件文件中我们将其声明为extern。因此,链接文件可以被编译,当主文件被编译时,链接文件中的变量声明 被忽略。

 
Alexey Viktorov:

我不知道。对我来说,所有的文件都是不言自明的。如果某处有困难,经过一些实验后就会消失。

但如果我不熟悉位操作,我可以阅读任何你想要的文章...我一个字都听不懂。就像我无法理解关于旗帜和旗套的任何东西,直到阿特姆用声音向我解释它们。

如果你要求从中获得价值,这是可以理解的,但这一切如何在之前和之后发挥作用--最黑暗的黑暗

 
Fast235:

如果要求它的 价值是可以理解的,但 前后的运作方式是模糊的,是最黑暗的模糊。

她是谁?

 
Alexey Viktorov:

她是谁?

工作的本质

 
Alena Lysenkova:

有的。
1)extern只在mql4中工作。
2)输入后的注释将显示在输入参数中,而不是输入变量的名称。
输入 int ma_period = 20;
- 它将显示 "ma_period"。
输入 int ma_period = 20; // MA周期
- 它将被写成 "MA期"。
要完全像mql4中那样,需要严格的编译模式#property strict.
这个技巧在extern中是不存在的。
3)外部变量可以像任何全局变量 一样在代码中被改变,输入变量则不能。

最初,只有mql4和extern,没有输入,mql4中也没有OOP。
然后开发了mql5,它立即包括了输入,因为mql5总体上是面向OOP的。
大约2-3年前,mql4进行了升级,增加了mql5的许多功能,包括输入。

你在写什么终端?

在MT5中,如果你在指标中把外部变量声明为extern,该指标可能无法通过iCustom()调用。

 
Dmitry Fedoseev:

你在写什么终端?

在MT5中,如果你在一个指标中把一个外部变量声明为extern,那么该指标可能无法 通过iCustom()调用

我现在没有责备,但你写道 "它可能会失败"...事实证明,它可能会也可能不会起作用!我的意思是,作为一个没有受过专门教育的自学成才者,我很难理解这种不确定性......

 
Alena Lysenkova:

有。
1)extern只在mql4中工作。
2)输入后的注释将出现在输入参数中,而不是输入变量的名称。
输入 int ma_period = 20;
- 它将显示 "ma_period"。
输入 int ma_period = 20; // MA周期
- 它将被写成 "MA期"。
要完全像mql4中那样,需要严格的编译模式#property strict.
这个技巧在extern中是不存在的。
3)外部变量可以像任何全局变量 一样在代码中被改变,输入变量则不能。

最初,只有mql4和extern,没有输入,mql4中也没有OOP。
然后mql5被创建,输入被立即包括在内,因为mql5总体上正是面向OOP的。
大约2-3年前,mql4进行了升级,增加了mql5的许多功能,包括输入。

extern在两种情况下都有效。MQL5和MQL4中的输入也是如此。它们的目的是不同的,而且在帮助中写明了。

为什么要直接把人引向对输入和外部变量的目的的误解?

 
Dmitry Fedoseev:

extern的含义是,如果主文件(main)有一些变量,而另一个文件附在这个文件上。而在这个附件文件中,我们需要使用在主文件中声明的变量,然后在附件文件中我们将其声明为extern。结果是,链接文件可以被编译,但当你编译主文件时,链接文件中的变量声明 被忽略了。

我还以为这个修改器的工作方式和C++一样,即在include文件中声明https://www.mql5.com/ru/forum/160683/page867#comment_11927748

经检查,它在C++中没有发挥应有的作用


tstextern库文件

//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
extern int koef=1 ;
 int MyCalculator(int value,int value2) export
   {
    return((value+value2)*koef);
   }
//+------------------------------------------------------------------+

脚本文件。

#import "tstextern.ex5"
int MyCalculator(int value,int value2);
#import

extern int koef;

void OnStart()
  {
      koef = 666;
      int res = MyCalculator(100,200);
      Print("result = ",res);
   
  }
//+------------------------------------------------------------------+

koef 变量的任何操作都无济于事,它仍然在本地范围内(每个文件内)。


阿尔乔姆-特里什金

他们的目的是不同的,在帮助中写明了。

区别在于访问控制。

输入 - 它只能被读取,禁止写入。

extern - 可以读和写,在MQL-程序重新初始化后,该值将恢复到外部设置中指定的值。

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2019.06.02
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Maksim Neimerik:

我现在并不消极,但你写道:"它可能不起作用"。它可能不起作用,但也可能起作用!我的意思是,作为一个没有受过专门教育的自学成才者,我很难理解这种不确定性......

我的意思是,我现在还没有检查。说曾经是什么是很危险的,因为事情经常变化。也许这是一个暂时性的小故障。

 
Igor Makanu:

我还以为这个修改器的工作原理和C++一样,也就是在include文件中声明https://www.mql5.com/ru/forum/160683/page867#comment_11927748。

在C++中,它并不像它应该的那样工作


tstextern库文件

脚本文件。

koef 变量的任何操作都无济于事,它仍然在本地范围内(每个文件内)。

嗯,你有一个图书馆。当然,会有不同的变数。所谓的是通过include连接mqh。