mql5言語の特徴、微妙なニュアンスとテクニック - ページ 119

 
Alexey Navoykov:

そして、一番下のものには行けません。だから、すべてがクリアなのです。

クラスや構造体をあらかじめ宣言できるようにしてください :)

class A;
class B{A*a;};
class A{};
 
fxsaber:

自由度が低い。

柔軟性とは、アルゴリズムの実行順序を乱すこと?)

イリヤ・マレフ

クラスや構造を事前に宣言できるようにしてください :)

まあ、論理的には矛盾しないんですけどね。関数の予備宣言と同じで、先に宣言されたものは先に初期化されます。 全ては論理的につながっているのです。

 
Alexey Navoykov:

柔軟性とは、アルゴリズムの実行順序に違反することなのでしょうか?)

これで、プログラムのどこからでもOnTickを呼び出すことができるようになりました。

 
fxsaber:

OnTickは、プログラム内のどこからでも呼び出せるようになりました。

しかし、一般に、関数の宣言順序は、コードの正しさを制御するための付加的な方法です。 たとえば、あるプラグイン・インルーダーの中で、誤ってOnTick()や、さらに悪いことにOnInit()を呼び出した場合、それは良いのでしょうか? ライブラリーはあなたの作業コードを見てはいけません。
 
Alexey Navoykov:

まあ、論理的には矛盾しないんですけどね。関数の先行宣言と同じで、先に宣言されたものは先に初期化される。 全ては論理的につながっているのだ。

あなたの論理と矛盾するかもしれませんが、一般的な論理と一瞬たりとも矛盾しません。なぜなら、コードの実行が始まる瞬間に、すべてが初期化されていることが保証されているからです。

 
Ilya Malev:

これはあなたの論理と矛盾するかもしれませんが、従来の論理と少しも矛盾していません。なぜなら、コードが実行されるまでに、すべてが初期化されていることが保証されているからです。

私の投稿を読み違えているようですね。矛盾しないと書いてある)

 
Alexey Navoykov:

私の投稿をよく読んでいないようですね。矛盾しないようにと書いてあった)。

そうなんです、申し訳ないです、そういうこともあるんです。

 
Alexey Navoykov:
しかし、一般的には、関数の宣言順序は、コードの正しさを管理するための追加的な方法です。 例えば、あるプラグインの中でOnTick()やさらに悪いことにOnInit()が誤って呼ばれた場合、それは良いことでしょうか? ライブラリは、あなたの作業コードを見てはいけないのです。

ライブラリーをインクルードする際、それぞれのライブラリーが自分の中に同じライブラリーをインクルードしている場合はどうすればいいのでしょうか?

 
fxsaber:

内部でそれぞれ同じライブラリを接続している場合、どうすればよいですか?

で、何が問題なんだ?
 
fxsaber:

ライブラリーを接続する際、それぞれのライブラリーが自分の中で同じライブラリーを接続している場合はどうすればいいのでしょうか?

#ifndef  MQL_TOOLS_H
#define  MQL_TOOLS_H

#endif

ディレクティブが入力されているのに使われていないのは不思議です。

理由: