mql5语言的特点、微妙之处以及技巧 - 页 121

 
TheXpert:

那我就不明白了。

关于交易、自动交易系统和交易策略测试的论坛

mql5的特殊性,技巧和窍门

Alexey Navoykov, 2019.01.14 16:35

如果你需要,你可以在一开始就声明void OnTick();。 但一般来说,函数声明的顺序是控制代码正确性的额外方式。例如,如果在某些插件中调用OnTick(),或者更糟糕的是,OnInit()发生了,这好吗? 图书馆不能看到你的工作代码。
 
fxsaber:

那我就不明白了

正向声明只针对类和结构,不针对函数。

 
fxsaber:

重点是,如果你要使用的函数是在inlude中指定的,你需要根据建议来写,如果inlude在下面。

提前插入一个插入器有什么问题?

对于一个文件来说,这可能是不方便的(带主体的函数必须在调用之前),但如果是mqh中的函数--在开头插入inlude有什么问题?

 
TheXpert:

正向声明只适用于类和结构,不适用于函数。

你澄清了这一点,这很好。

安德烈-哈蒂姆连斯基

提前插入一个插入器有什么问题?

对于单个文件来说,这可能是不方便的(一个函数在调用前必然有一个主体),但如果函数是在mqh中--在开头插入一个内联有什么问题?

一些带有宏的结构有时需要在最后一行加入inlude。我不会给你一个具体的例子,我在实践中多次遇到过。

 
TheXpert:

正向声明只针对类和结构,不针对函数。

不,我也错了。一个函数有一个声明和定义。
 
fxsaber:

一些带有宏的结构有时需要在最后一行插入一个inlude。我不会给你一个具体的例子,我在实践中遇到过很多次。

我认为单个宏不值得为了它们而牺牲架构的正确性。

无论如何,程序代码在任何情况下都必须完全按照其预定的算法来执行。在初始化之前访问一个变量 是无稽之谈。 这不应该被编译。

 

顺便说一下,如果一个inlude使用了一些不存在的函数,无论如何都必须在那里声明。就像类和外部变量一样。 否则,它就是一个拐杖,而不是一个嵌套。

相应地,插件也不应该依赖于它被插入的地方。

 
Alexey Navoykov:
顺便说一下,如果在inlude中使用了一些函数,而这些函数并不在那里,那么无论如何必须在那里声明。否则,它就不是一个嵌套,而是一个拐杖。

你认为Inlude是什么?对我来说,它只是一段文字,分配到一个单独的文件。而其重新进入源头却被忽略了。没有别的了。

 
fxsaber:

你认为Inlude是什么?对我来说,它只是一段文字,分配到一个单独的文件。而其重新进入源头却被忽略了。没有别的了。

我认为应该是独立的,独立的代码。 这更有意义,而且容易控制,对这段代码做独立的语法检查。 但如果所有东西都在不同的文件里,而且不清楚从哪里调用,那就乱了。

 
Alexey Navoykov:

嗯,我认为应该是独立的独立代码。 这更有意义,也更容易控制和执行独立的语法检查。 如果所有的东西都分散在文件中,不清楚从哪里调用了什么--那就乱了。

我的代码的例子已经张贴出来了。我没有听到任何关于混乱的反馈,即使是不编译的incudes。