externとinputの違い - ページ 6

 

一般に、グローバル 変数は悪であるという事実から始めるべきで、そのような変数が多くのファイルで使われ、どこからでも変更できる場合は、悪の二乗です!したがって、そのような変数は常に定数として宣言すべきです(アルゴリズムの論理に影響しない、デバッグ用の補助変数の話をする場合は別です)。

つまり、定数のグローバル変数があるのなら、最後に括弧をつけて関数にした方が、この関数の実装を自由に設定できて楽ではないか、という当然の結論になる。 そして、上に書いたようにMQLのextern変数が未発達なことを考慮すると、他に代替手段がないのである。
 
extern指定子は、プロジェクトが複数のmq5ファイル(mqhと混同しないように)から構成されている場合に必要です。この場合、グローバル変数を 別のファイルで宣言するのが理にかなっています。mqhで構成されるプロジェクトで、#includeを使ってビルドする場合、1つのファイルを複数のファイルに分割しているので、externは必要ありません。
 
Vladimir Simakov:
extern指定子は、プロジェクトが複数のmq5ファイル(mqhと混同しないように)から構成されている場合に必要です。この場合、グローバル変数を 別のファイルで宣言するのが理にかなっています。mqhで構成されるプロジェクトで、#includeを使ってビルドする場合、1つのファイルを複数のファイルに分割しているので、externは不要です。

の例が必要です。ライブラリでexternを使用してみましたが、うまくいきませんhttps://www.mql5.com/ru/forum/316795/page2#comment_12259472

 
Igor Makanu:

の例が必要です。ライブラリでexternを使用してみましたが、うまくいきませんhttps://www.mql5.com/ru/forum/316795/page2#comment_12259472

図書館用ではなく、プロジェクト用です。プロジェクトは、#includeでビルドするか、いくつかのmq5ファイルを作るかのどちらかです。2つ目のケースでは、グローバル変数を異なるファイルのスコープに入れるためにexternが必要です。
 
Vladimir Simakov:
ここでは、2番目のケースで、グローバル変数を異なるファイルのスコープに入力するexternが必要です。

私は気にしませんが、私は例が必要です、ここであなたはexternを使用する場所を推測することができます - 私はライブラリでそれを試してみましたが、それは動作しませんでした、あなたはexternをどのように使用するかを教えてください。

 
Vladimir Simakov:
図書館向けではなく、プロジェクト向けです。プロジェクトは、#includeでビルドするか、いくつかのmq5ファイルを作るかのどちらかです。2つ目のケースでは、グローバル変数を異なるファイルのスコープに入れるためにexternが必要です。
具体的にどのように変数をスコープに入力するのですか? mq5-filesはプロジェクト 内で独立しており、何のつながりもありません。 各ファイルのコンパイルは独立していますね。
 
要は、externが単に不要であることが判明したのです。任意のプロジェクト ファイルでグローバルに宣言された変数は、そのファイルすべてで利用可能です。でも、なぜ?クリエイターに質問です。
 
Vladimir Simakov:
要は、externが単に不要であることが判明したのです。任意のプロジェクトファイルでグローバルに宣言された変数は、そのファイルすべてで利用可能です。でも、なぜ?クリエイターに質問です。

extern変数は、それが使用されるすべての*.mqhファイルで宣言することができます。

このような*.mqhファイルは、グローバル変数が宣言されている*.mq5(または他の*.mqh)ファイルには依存しません。
これにより、他のプロジェクトでそのファイルを利用することができ、コードの再利用 性が高まります。

 
Ilyas:

extern変数は、それが使用されるすべての*.mqhファイル内で宣言することができます。

このような*.mqhファイルは、グローバル変数が宣言されている*.mq5(または他の*.mqh)ファイルには依存しません。
これにより、他のプロジェクトでそのファイルを利用することができ、コードの再利用 性が高まります。

ありがとうございます、これで理屈がわかりました。私はもともと、C++のexternと似たようなものだと思っていました。
 
Vladimir Simakov:
ありがとうございます、これで理屈がわかりました。私はもともと、C++のexternと似たようなものだと思っていました。

似てませんか?