После загрузки на исполнение mql5-программы каждой переменной выделяется память в соответствие с типом переменной. Переменные делятся на два типа по уровню доступа - глобальные переменные и локальные переменные, и по классам памяти: входные параметры mql5-программы, статические и автоматические. Каждая переменная при необходимости...
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
これは正しいコンパイラの動作でしょうか?A::iを呼び出すA::f()メソッドを呼び出した時点では、A::iは生成されていないようです。
クリエイテッドとはどういう意味ですか?
static は、グローバル変数や関数を隠すためのレーキを作成 し、関数やクラスの可視性を制限するだけです。
グローバル変数のメモリは常に存在します。
そして、そうです、グローバル変数の場合、初期化の順番は 非常に重要です(つまり、初期化される前に変数にアクセスするのは避けましょう)
この例はうまくいきました...
。
上の例ではうまくいきました...
このままコンパイラーを変更するのですか?個人的には、今のままでいいと思います。
この時点でコンパイラを変更するのでしょうか?個人的には、すべてこのままでいいと思います。
行動を変えることは考えていません。
しかし、グローバル変数への アクセスエラー(初期化前)を検出する作業は後回しにされています。
この機能を実装すると、上記のコードをコンパイルする際に警告が表示されます。A::f()関数がA::iの初期化に使われており、初期化中のA::i変数にアクセスしているのです。
この機能を実装すると、上記のコードをコンパイルする際に警告が表示されます。A::f()関数がA::iの初期化に使われており、初期化中のA::i変数にアクセスしてしまうのです。
ありがとうございました。
行動を変える予定はありません
そうすると、宣言が完了した時点で変数が宣言されたとみなすというあなたの概念と矛盾します。そもそも、なぜそれを発明したのですか?ある場合はそうで、別の場合は違うというのであれば
良い言語には統一されたルールがあり、その逆はない。そうすると、宣言が完了した時点で変数が宣言されたとみなすというご自身の概念と矛盾します。そもそも、なぜそれを発明したのですか?ある場合はそうで、別の場合は違うということであれば
良い言語には統一されたルールがあり、その逆はない。全く無知な私ですが、飲み過ぎたとしても(int i = i)とは思いませんでした.........。8(
まったく無知な私ですが、こんなこと(int i = i)は飲みすぎても思いつきませんでした・・・・・・。8(
また、元の例との 主な違いは何でしょうか?不要なものを取り除けば、必ず手に入る。
ただ、そちらにはたくさんの弦があり、こちらには1本だけです。
もしコンパイルエラーがなければ、ここでもエラーにならないはずです(逆も然り)。
そうすると、宣言が完了した時点で変数が宣言されたとみなすというご自身の概念と矛盾します。そもそも、なぜそれを発明したのですか?ある場合はそうで、別の場合は違うということであれば
良い言語には統一されたルールがある、その逆はない元の例と 根本的に違う点は何ですか?余計なものを取っ払えば、それでいい。
ただ、そこにはたくさんの線があり、ここにはひとつしかない。
コンパイルエラーがなければここでもないはずですが(逆も然り)、そうでなければ混乱します。
間違っている、同じじゃない。
クラス内の静的変数の記述は、その事前定義(関数やクラスの事前定義と同様)ですが、実際には、その変数がメモリ内のどこに格納され、いつ初期化されるべきかをコンパイラに指示するだけです。