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

 
Denis Kirichenko:

あるんです。ログから1件しか出てきません。フルはこんな感じです。

そうすると、最後の一行がどこから出てくるのか理解できない。

 
fxsaber:

そうすると、最後の一行がどこから出てくるのか理解できません。

コンテキストメニューの「編集」を選択した後、ナビゲータがex5と同じパスにあるオリジナルのmq5を見つけることができません。

ex5がShared Projectsからscriptsフォルダに移動し、mq5が存在するため

修正する。テスターの 設定と同じようにスマート検索をしてみよう

 
fxsaber:

ありがとうございます、良いルールですね。自分の無能さの犠牲者になった。本当に、もっと分かりやすいルールが必要ですね。


たぶん、どちらの場合にも Warning clever to do?

ここでコンパイルエラーが 発生したのでしょう。
 
Alexey Navoykov:
ここでコンパイルエラーが 発生したのでしょう。
おいおい、どうしたんだ。どんな根拠で?deleteはポインタの値を変更しないので、定数違反にもならない。というわけで、ここはコンパイラに文句を言われることもなく、すべてクリアです。
 
Vladimir Simakov:
おいおい、どうしたんだ。どんな根拠で?deleteはポインタの値を変更しないので、定数違反にもならない。だから、ここのコンパイラには何の不満もないんです。
2番目のサンプルについてです
 
Alexey Navoykov:
2番目の例について話しています
void f( const int i )
{
  static const int j = i;
  
  Print(j);
}

void OnStart()
{
  f(1); // 1
  f(2); // 1
}

静的変数は、最初の呼び出しで初期化されます。
 
fxsaber:

静的変数は、最初の呼び出しで初期化されます。
本当ですか?明日、テストしてみないと。ドキュメントによると、「静的変数は実行時に存在し、専用のOnInit()関数が呼ばれる前に一度だけ初期化 される」とあります。初期値の指定がない場合、静的メモリクラス変数はゼロの初期値をとる。

もし、あなたのように書いているのであれば、ドコモのライターの裏には猛烈なバグがあることになります。
 
Vladimir Simakov:
...もし、あなたが書いているように、ドックライターは悪いバグを持っています。
ドコモのライターさんの言う通りです。静的変数はローカル値で初期化できない。
これが本当にMqlでコンパイルされるのであれば、1年前に行われたスタティック変数の初期化 順序の修正時にこのバグが発生したのでしょう。
 
Alexey Navoykov:
ドックライターの言うことはまさにその通りです。静的変数はローカル値で初期化できない。
もし今Mqlでコンパイルできるのであれば、1年前に静的変数の初期化を 修正したことによるバグに違いありません。
あるいは、C++標準に変換されたコードで、この場合、ドキュメントのバグとなります。さて、頭を整理して、コーヒーを飲んで確認します。
 

デベロッパー説明が必要である。どちらを信じるか?ドキュメントか実装か?ここまでは未定義の動作です。

@fxsaber さん、公式の説明の前に使うのは、万が一、取られて修正されることを考えると、あまりお勧めできませんね。

理由: